pytest和unittest

pytest和unittest的区别

基本测试用例:

unittest- 需要 import unittest

​ 写case必须定义类

​ 测试类必须继承class TestLogin(unittest.TestCase):

​ 测试用例函数必须以test开头 def test_login1(self):

pytest - 需要import pytest

​ 不必须定义类,类和函数都支持

​ 类必须以Test开头

​ 函数必须以test开头

断言:

unittest- 提供了很多自带的断言,通过self.assertEquart(预期结果,实际结果,断言不通过的报错信息-可不写)

pytest - 只需要用关键字 assetr 1 != 2:

参数化:

unittest- 安装第三方模块 parameterized

​ @parameterized.parameterized.expand((【】,【】,【】))

​ 传入的是一个二维数组,一个数组就是执行一次case

pytest - 自带的 pytest.mark.parameterized

​ @pytest.mark.parameterized(“参数名字”,【1,2,3】)单个参数的写法,先传入参数名字,再传入 一个数组,数组的每一个元素执行一次case

​ @pytest.mark.parameterized("参数名字1,参数名字2“,【[1,2 ],[ 3,4]】) 多个参数的写法,传入多 个参数名字,再传入一个二维数组

​ @pytest.mark.parametrize(“a,c”, [(1, 2), (0.5, 3)])

​ @pytest.mark.parametrize(“b”, ["+", “-”, “*”, “/”]) 这种2行的写法能做到参数轮询组合运行case

测试用例的跳过:

unittest- 使用 @unittest.skip(‘跳过原因’) 和 @unittest.skipIf(‘True或者False’, ‘跳过的原因’) 来装饰跳过,可以跳过类也可以跳过函数
pytest - 使用 @pytest.mark.skip(‘跳过原因’) 和 @pytest.mark.skipIf(‘True或者False’, ‘跳过的原因’) 来装饰跳过,可以装饰类也可以装饰函数

用例查找:

unittest- 是使用内置的方法,去查找某一个文件夹下面的某个条件的文件

test_suit = unittest.defaultTestLoader.discover(’ test_case ', ’ test*.py ') 从test_case这个文件夹下面查找,以test开头的py文件,返回一个用例集合

test_runner = unittest.TextTestRunner() 实例化test_runner

test_runner.run(test_suit) 使用test_runner 运行测试用例集 test_suit,可直接运行了

pytest - 在 _ _ name_ _ = _ main _下面运行 pytest.main(),在括号里来指定运行内容和运行方式

pytest.main () 什么都不指定,从当前目录下所有文件夹搜索case

pytest.main ("-q",_ file ]) -q是安静模式, _ file_ _是从当前文件下面执行case

pytest.main (’-vs’, ’ ./case ') 指定查找目录是当前文件夹上一级的case文件夹,-v是详细模式-s是打印print信息

pytest.mian (’ ./case ', ’ -m ', ’ smoke ') 指定运行smoke标签的case

前置、后置操作:

unittest- @classmethod

setUpClass 所有case运行之前执行一次,是一个类方法,需要装饰

setUp 每条case运行之前都执行

@classmethod

tearDownClas 所有case运行之后执行一次,是一个类方法,需要装饰

tearDown 每条case运行之后都执行

pytest - 下面是函数的方法:

setup_module 所有case运行之前执行一次

teardown_module 所有case运行之后执行一次

setup_function 每条case运行之前执行

teardown_function 每条case运行之后执行

下面是类的方法:

setup_class 所有case执行之前执行一次

eardown_class 所有case执行之后执行一次

setup_method 每条case执行之前执行

teardown_methon 每条case执行之后执行

用例标签:

unittest -无
pytest - 用装饰器 @pytest.mark.smoke; @pytest.mark.online
  • 可以装饰类,可以装饰方法
  • 统一的标签管理,在一个文件里case_tags定义: smoke=pytest.mark.smoke,这样在使用的时候导入统一的文件即可,@case_tages.smoke 来装饰
    失败重跑:
    产生测试报告:

选用pytest的理由:

1、pytest完全兼容unittest
2、pytest有标签,方便运行
3、断言更简单易用
4、支持用例失败重跑
5、pytest的参数化不依赖第三方库

1、unittest的四大模块
test_suit
test_runner
test_case
test_fixture --其实就是setup和teardown


版权声明:本文为weixin_39193977原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>