Pytest框架与unittest的区别

图片[1]-Pytest框架与unittest的区别-软件测试圈

unittest和pytest特点

pytest是基于unittest衍生出来的新的测试框架,使用起来相对于unittest来说更简单、效率来说更高,pytest兼容unittest测试用例,但是反过来unittest不兼容pytest,所以说pytest的容错性更好一些!在使用交互逻辑上面pytest比unittest更全一些!
官方文档:https://docs.pytest.org/en/stable/
unittest是python自带的测试库,自我感觉的话,如果对python只是了解基础知识,学unittest框架相对于来说要好理解些,unittest框架也完全可以实现市场上大部分的业务测试!建议可以先了解下unittest框架,然后在学pytest框架,可以更好的去感受一下两个框架的优缺点
官方文档:https://docs.python.org/zh-cn/3/library/unittest.html

unittest和pytest特点共同点:

1测试框架 - 通过python代码来编写测试用例、收集用例、运行用例、生成报告。

编写用例上:

unittest

(1)测试类必须继承unittest.TestCase

(2)测试函数必须以"test_"开头

(3)测试类必须有unittest.main()方法

pytest

(1)测试文件的文件名必须以"test_"开头,或者以"_test"结尾

(2)测试类命名必须以"Test"开头

(3)测试函数名必须以"test"开头

(4)测试类里面不能使用"init"方法

用例前置后置:

unittest:
setup/teardown setupClass,tearDownClass
(1)通过setup每个用例执行前执行,teardown每个用例执行后执行
(2)通过setupclass类里面所有用例执行前执行,teardownclass类里面所有用例执行后执行
pytest:
方案一:沿用了unittest的风格。
1、用例级别:setup,teardown -- 类和类外的用例都可以使用
2、类级别:setup_class teardown_class --- 类用
@classmethod
def setup_class(cls):
print(" 类 -- 前置 --")
3、模块级别:setup_module teardown_module

    方案二:fixture
    通过firture可以自定义pytest的前置和后置,格式fixture(scope="function", params=None, autouse=False, ids=None, name=Noe)
    (1)模块级别:setup_module/teardown_module,整个.py全部用例开始前执行/全部用例执行完后执行

(2)函数级别:setup_function/teardown_function,只对函数级别生效,每个用例开始前和结束后执行一次

(3)类级别:setup_class/teardown_function,只对类级别生效,类里面所有用例开始前执行一次,所有用例执行完执行一次

(4)方法级别:setup_method/teardown_method,只是类里面方法级别生效,方法开始前执行一致,方法结束后执行一次

断言:

  • unittest: self.assertXXXXX()
  • pytest: assert 表达式

收集用例和运行用例:

用例分散在多个文件当中:
unittest: TestLoader.discover(目录) - 收集到套件当中。run方法去执行。
pytest:
不需要写任何代码去收集用例 - 自动收集/发现用例的方式。
执行用例的时候会自动收集:
pytest命令行:pytest [参数]

Pytest如何自动收集用例的?
1、目录 - 从哪个目录下开始搜索用例。
rootdir: pytest命令在哪个目录下运行,就以哪个目录为rootdir.
2、文件名 - 命名符合test_.py或者_test.py条件的文件名,它里边儿是会有用例。
3、函数/类下方法 - 函数名以test_开头

  • 以Test开头(不含init)的类下的test_开头方法

Pytest收集并运行用例
方式一:
命令行:pytest -s -v 控制台显示详细的用例执行情况
方式二:
python文件:pytest.main([命令行参数])

unittest和pytest生成测试报告:

unittest: HtmlTestRunner、BeautifulReport
pytest: html-插件
html插安装命令:pip install pytest-html
allure-插件
有非常多的插件。allure-插件 重运行-插件

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论