httprunner3的log本身是不能在allure上展示的
可以通过改写\Lib\site-packages\httprunner\runner.py文件中的test_start方法实现报告存放allure中展示
添加一行
allure.attach.file(self.__log_path, name='log', attachment_type=allure.attachment_type.TEXT)
改写代码如下:登录后复制
def test_start(self, param: Dict = None) -> "HttpRunner":
"""main entrance, discovered by pytest"""
self.__init_tests__()
self.__project_meta = self.__project_meta or load_project_meta(
self.__config.path
)
self.__case_id = self.__case_id or str(uuid.uuid4())
# self.__log_path = self.__log_path or os.path.join(
# self.__project_meta.RootDir, "logs", f"{self.__case_id}.run.log"
# )
self.__log_path = os.path.join(self.__project_meta.RootDir, "logs", "{}.txt".format(time.time()))
log_handler = logger.add(self.__log_path, level="DEBUG")
# parse config name
config_variables = self.__config.variables
if param:
config_variables.update(param)
config_variables.update(self.__session_variables)
self.__config.name = parse_data(
self.__config.name, config_variables, self.__project_meta.functions
)
if USE_ALLURE:
# update allure report meta
allure.dynamic.title(self.__config.name)
allure.dynamic.description(f"TestCase ID: {self.__case_id}")
logger.info(
f"Start to run testcase: {self.__config.name}, TestCase ID: {self.__case_id}"
)
try:
return self.run_testcase(
TestCase(config=self.__config, teststeps=self.__teststeps)
)
finally:
allure.attach.file(self.__log_path, name='log', attachment_type=allure.attachment_type.TEXT)
logger.remove(log_handler)
logger.info(f"generate testcase log: {self.__log_path}")