import pytest
"""
总结:
pytest.mark.skip()
pytest.mark.parametrize()
pytest.fixture()
py.test -s -q --junitxml=./report.xml tests/
"""
# 1. 常用的装饰器
# 1.1 pytest.mark 常用函数的使用
"""
pytest.mark.xfail();
这条用例失败时,测试结果被标记为xfail(expected
to
fail),并且不打印错误信息。
这条用例执行成功时,测试结果被标记为xpassed(unexpectedly
passing)
pytest.mark.skip();
@pytest.mark.skip(reason="not implementation") #not implementation 未实现;
pytest.mark.skipif();
@pytest.mark.skipif(条件1==1,reason='跳过原因')
pytest.mark.parametrize()可以实现测试用例参数化,类似DDT ################## important 1
@pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
@pytest.mark.parametrize("user,pwd",[("18221124104",111111),("18200000000",111111)])
pytest.main()
"""
# 1.2 @pytest.mark.自定义标签的使用;标记名可以自定义,最好起有意义的名字;
"""
@pytest.mark.login
@pytest.mark.logout
@pytest.mark.normal
"""
# 1.3 pytest.fixture():
"""
通过它可以在测试执行前执行一些操作,在这里我们利用fixture提前读取到配置信息; ################## important 2
@pytest.fixture(scope="session");
scope可能的取值有function,class,module,package 或 session
function,表示fixture函数在测试方法执行前和执行后执行一次。
class ,表示fixture函数在测试类执行前和执行后执行一次。
module,表示fixture函数在测试脚本执行前和执行后执行一次。
package,表示fixture函数在测试包(文件夹)中第一个测试用例执行前和最后一个测试用例执行后执行一次。
session,表示所有测试的最开始和测试结束后执行一次。
"""
# 2. 其他
"""
pyest有一个插件pytest-xdist可以做到并发执行,安装之后,执行测试用例通过执行-n参数可以指定并发度,
通过auto参数自动匹配CPU数量作为并发度。并发执行本文的所有测试用例:
py.test -s -q --tb=no -n auto tests/
通过指定–junitxml参数可以生成XML格式的测试报告
py.test -s -q --junitxml=./report.xml tests/
一些参数的意思:
-s 选项允许终端在测试运行时输出用例中的某些结果
-v | --verbose 顾名思义, -v 参数会使得输出信息更为详细
-q | --quiet 该参数选项与 -v 整好相反,是简化输出
–tb=style 选项会决定有失败用例时候捕捉到的失败信息的显示方式,可选参数有 short 、line、no;
-n 分布式执行测试用例 pytest xxx -n NUM;pytest xxx -n auto;
–reruns 用例失败后重新执行 pytest xxx --reruns NUM;
-m 标记(marker)用于标记测试用例并分组,方便我们快速选择要运行的测试用例。 pytest -m 'run_this';包含标记 run_this 的测试函数都被成功执行。
–collect-only 选项可以让你非常方便在测试运行之前,检查在给定的配置下哪些测试用例会被运行;检查选中的测试用例是否符合预期。
-h | --help 显示帮助信息,以及参数列表
"""