1.自动调用conftest.py内的fixture 函数
conftest.py
@pytest.fixture(scope="session", autouse=True)
def fix_a():
print("********************************")
print("setup 前置操作")
yield
print("teardown 后置操作")
print("********************************")
test_x.py
class Test_Report:
@allure.description("test add description")
def test_get_reportResult(self):
res = requests.get("https://www.baidu.com")
codes = res.status_code
assert codes == 300
def test_2(self):
print("test case 2 ")
case 会经历三个过程:
when='setup' ( 执行case 前置操作)
when='call' ( case 被调用,执行过程)
when='teardown' ( case 执行后, 后置操作过程)
备注: 当其中的某一个过程失败,后续的过程则不再继续执行
2.获取case 的执行数据
- 获取执行结果
def pytest_runtest_makereport(item, call):
out = yield # 钩子函数的调用结果
print("case result {}".format(out))
case result <pluggy._result.Result object at 0x00000130E07B9F40>
- out 对象属性
获取测试报告:
report = out.get_result()
结果: <TestReport 'cases/debug_report.py::Test_Report::test_2' when='teardown' outcome='passed'>
获取当前执行过程: report.when
step = report.when
print('步骤:%s' % report.when)
步骤:setup
获取测试方法的名称: nodeid
print('nodeid:%s' % report.nodeid)
获取测试描述细节: item.function.__doc__)
print('description:%s' % str(item.function.__doc__))
获取运行结果:report.outcome
print(('运行结果: %s' % report.outcome))
运行结果: failed
动态添加__doc_方法
import types
def original_function():
"""这是一个原始函数。"""
pass
# 动态添加文档字符串
# 1.定义一个新的方法,接收参数
def new_docstring(func):
# 2.在函数内部, 在定义一个函数, 用来接收不定长参数 和关键字参数
def wrapper(*args, **kwargs):
# 3.内部 返回对象为 外部参数名称作为函数,且允许接收关键字参数和不定长参数
return func(*args, **kwargs)
# 4.为嵌套函数添加__doc__属性, 然后返回
testlist = "ssssss"
wrapper.__doc__ = testlist
# wrapper.__doc__ = "这是一个新添加的文档字符串。"
return wrapper
# 5.调用新函数, 参数为原函数
# 应用新的文档字符串到原始函数
test = new_docstring(original_function)
# 打印出新的文档字符串
print(test.__doc__)