1. Python+request+pytest 接口自动化测试框架入门 - 简书
pytest和unittest的比较:
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
1. pytest更容易参数化,适用于更复杂的场景
1.unittest参数化
可以通过nose_parameterized来实现,格式:@nose_parameterized.parameterized.expand(data), ‘data’为list格式的参数化的数据
2.pytest参数化
通过装饰器@pytest.mark.parametrize来实现
2.pytest的测试报告更详细,allure报告很详细
1.unittest
通过HTMLTestRunner生成
2.pytest
(1)通过pytest-html生成html格式报告
(2)通过allure生成方案(很详细)
3.pytest断言更简洁
1.unittest 断言
assertEqual(a, b) # 判断a和b是否相等
assertNotEqual(a, b) # 判断a不等于b
assertTrue(a) # 判断a是否为Ture
assertFalse(a) #判断a是否为False
assertIn(a, b) # a 包含在b里面
asserNotIn(a, b) # a 不包含在b里面
……
2.pytest 断言
pytest只需要用assert 来断言就行,assert 后面加需要断言的条件就可以了,例如:assert a = = b # 判断a是否等于b、
assert a != b # 判断a不等于b、assert a in b # 判断b包含a
总结:从断言上面来看,pytest的断言比unittest要简单些,unittest断言需要记很多断言格式,pytest只有assert一个表达式,用起来比较方便