目录
1.生成junitXML格式的测试报告,方便Jenkins进行集成
一、pytest的安装操作
1.使用pip命令直接进行安装
pip install pytest
2.查看已安装的pytest的版本:
C:\Users\Administrator>pytest --version This is pytest version 4.6.4, imported from c:\python27\lib\site-packages\pytest.pyc
3.简单测试举例:
def reverse(string):
return string[::-1] # 翻转字符串函数
def test_reverse():
"""翻转字符串测试函数"""
string = "good"
assert reverse(string) == "doog" # 第1个断言操作
another_string = "itest"
assert reverse(another_string) == "tseti" # 第2个断言操作
二、pytest中的测试用例的收集规则
1.默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录中进行搜索。
2.搜索规则:
- 查找当前文件夹以及递归子文件夹中的所有 test_*.py 或 *_test.py 的文件,将其当作测试文件
- 不在类中的以 test_ 开头的方法和函数
- 在Test开头的类中(不含__init__方法),以test_ 开头的方法
- pytest也支持unittest模式的用例定义
举例:当前文件下有2个测试文件:
test_calc.py test_quick_start.py
则运行所有的py文件:
pytest # 运行所有的test_ 开头的py文件
只运行部分py文件:
pytest test_calc.py # 只运行test_calc.py
三、pytest的基本操作
1. 使用Assert进行断言
每一个测试用例都需要尽心断言,pytest使用python的assert进行断言,降低了学习成本。
assert后接表达式,只要表达式的结果为true,则用例执行成功,反之失败。
assert执行失败时的描述非常清晰:
================================== FAILURES ===================================
________________________________ test_reverse _________________________________
def test_reverse():
string = "good"
> assert reverse(string) == "dooog"
E AssertionError: assert 'doog' == 'dooog'
E - doog
E + dooog
E ? +
test_quick_start.py:12: AssertionError
========================== 1 failed in 0.12 seconds ===========================
常见的断言:
- assert可以使用直接使用“==”、“!=”、“<”、“>”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于。
- assert 可以直接使用 in 和not in 来比较包含与不包含。
- 通过assert不需要任何辅助符号,直接判断对象是否为ture,而assert not 用于判断是否为false
2. fixtured的操作
fixture:即测试用例执行的环境准备和清理操作。
在unittest中指的是setup(),teardown(),classSetup(),classTeardown()。
fixture主要的目的是为了提供一种可靠和可重复型的手段去运行那些最基本的内容。例如在测试网站时,每个用例都需要登录和退出,利用fixture只做一次即可,避免在每个用例执行前都做冗余的操作。
使用Fixture进行初始化操作,相当于 tearUp和tearDown的过程,可在下述情