ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

unittest与pytest对比

2021-07-11 20:34:42  阅读:186  来源: 互联网

标签:unittest 前置 fixture --- 用例 pytest 对比 def


---相同点:
测试框架:通过python代码来编写用例、搜集用例、运行用例、生成报告
---编写用例:
unittest:继承TestCase unittest.testcase
pytest:函数/类里面的方法,用例名称必须以test_开头,如果用例在类中,类名必须以Test开头
---前置后置:
unittest:setup/teardown setupClass,tearDownClass
setup:当中得到的变量,如何从传递给测试用例 self.xxx
setupClass:cls.xxx

pytest:
方案一:沿用unittest的风格
1、用例级别:setup teardown 类和类外部的用例都可以使用
2、类级别:setup_class teardown_class
@classmethod
def setup_class(self):
print("类前置-01")
@classmethod
def teardown_class(self):
print("类后置01")
3、模块级别:
setup_module teardown_module
方案二:fixture
先定义再调用
定义:@pytest.fixture() def init()
调用:@pytest.mark.usefixtures("init")
1、函数实现的,函数名称不固定---如何知道它是前置/后置
@pytest.fixture
def fix():
pass
2、前置和后置操作,写在一个函数里面 ---如何区分哪些是前置代码 哪些是后置代码
@pytest.fixture
def fix():
前置代码
yeild #分隔线
后置代码
3、4个作用域 测试函数(function)、测试类(class)、测试模块文件(module)、测试会话(session)
@pytest.fixture(scope=function/class/module/session)
def fix():
前置代码
yield #分隔线
后置代码
4、不需要跟测试类/测试函数放在一起,需要时再调用
5、前置操作得到的一些数据,如何传递给测试用例
yield 返回值
在测试用例当中,以fixture函数名作为用例参数,用例参数接收返回值
def init():
print("作用于为测试函数的======前置======代码")
a = [1,2,3,4,5,6]
yield a
class TestDay:
def test_new01(self,init):
print("===类下的用例1===")
for i in init:
print(i)
测试函数的参数有两种:fixture 参数化-case
如果fixture有返回值,那么将它作为测试函数的参数时,则可以不用使用:@pytest.mark.usefixtures("init") 程序会自动找
6、共享机制:conftest.py
conftest.py:定义fixture,可以定义多个
共享的范围:当前conftest.py所在目录下(包括子孙目录)的所有测试用例共享
如果需要在test01基础上增加内容,变成test02。需要在test02上引用test01---伪继承
@pytest.fixture()
def fix01():
pass

@pytest.fixture()
def fix02(fix01):
新增的代码
yield fix01
执行顺序:fix01前置 fix02前置 fix02后置 fix01后置
嵌套的前提:fix01 与fix02 要么同级,要么fix01>fix02

---断言
unittest:self.assert
pytest:assert 表达式,根据表达式的结果判断通过/失败
---收集用例
用例分散在多个文件中
unittest:TestLoad.discover(目录)---收集到套件中,run方法执行
pytest:不需要写代码去搜集用例,自动收集-查找用例的方式。执行用例时会自动收集
pytest命令行:pytest[参数]
如何自动收集用例:
1、目录--从哪个目录下开始搜索用例:
rootdir:在哪个路径下运行,则pytest自动在当前路径下进行查找-rootdir

2、文件名--命名符合test_*.py或者*_test.py条件的文件名
3、函数/类下方法:-函数名以test_开头
-以Test开头(不含__init__)的类下的test_开头方法
搜集并运行用例
方式一:pytest -s -v 控制台显示详细用例执行情况
方式二:python文件中-pytest.main()
---执行顺序
1、文件名:ASCALL码顺序从上到下
2、文件内部:按照代码先后顺序-即从上到下执行
---测试报告
unittest:HTMLTestRunner BeautifulReport
pyteest:allure

标签:unittest,前置,fixture,---,用例,pytest,对比,def
来源: https://www.cnblogs.com/dvbbs2012/p/14999489.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有