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 ")


[pytest] pytest 执行过程解析_字符串

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__)