文章目录
一、背景:
目前在做接口自动化生成测试报告的过程中,比较火的就是结合Allure生成报告,大多数过程中生成的Allure报告当中-环境变量栏目都是为空的,本篇主要介绍如何在Allure报告当中添加环境变量描述
二、准备工作:
2.1、添加环境变量思路:
能够在Allure报告当中看到环境变量参数,那就必须在生成的xml文件当中(也就是生成的自动化测试数据)当中添加环境变量参数的,properties文件,从而达到显示的目的
所以我们可以先生成一份.properties文件后直接copy到测试数据当中去(这里不理解的可以看下我之前分享的main函数),从而达到我们的目的
2.2、复制文件到指定目录
import shutil
def mycopyfile(srcfile, dstpath): # 复制函数
"""
将源文件srcfile,复制并粘贴到执行路径下dstpath
"""
if not os.path.isfile(srcfile):
print("%s not exist!" % (srcfile))
else:
fpath, fname = os.path.split(srcfile) # 分离文件名和路径
if not os.path.exists(dstpath):
os.makedirs(dstpath) # 创建路径
shutil.copy(srcfile, dstpath + fname) # 复制文件
print("copy %s -> %s" % (srcfile, dstpath + fname))
2.2.1、调用方法
if __name__ == "__main__":
mycopyfile(f"{
BASE_DIR}/test_datas/data_type/properties/windows/environment.properties",
f"{
BASE_DIR}/test_datas/data_type/properties/linux/")
解决完复制移动文件后,需要解决对.properties文件的解析了
2.3、.properties文件解析
class Properties(object):
"""
.properties文件读取&写入操作
"""
def __init__(self, filename, encoding='utf-8'):
# filename,详细的.properties文件路径
self.filename = filename
self.fp_read = open(self.filename, 'r', encoding=encoding)
self.data = self.fp_read.readlines()
self.fp_read.close()
self.properties = {
}
for i in self.data:
if '#' in i:
continue
sp = i.split('=')
key = sp[0].replace(' ', '')
value = sp[-1].replace('\n', '').replace(' ', '')
# .properties文件值存储为键值对形式,存在相同的key值则update更新
self.properties.update({
key: value})
def get(self, key):
# 输入键值对key值,获取对应value值
return self.properties[key]
def set(self, key, value):
"""
输入键值对:key-value,相同则覆盖更新,不通则写入
"""
self.fp_write = open(self.filename, 'w', encoding='utf-8')
try:
self.properties[key] = value
except:
pass
data = ""
for k, v in self.properties.items():
data += k + " = " + v + "\n"
self.fp_write.writelines(data[:-1])
self.fp_write.close()
2.3.1、调用方法:
if __name__ == '__main__':
p = Properties(f"{
BASE_DIR}/test_datas/data_type/properties/windows/environment.properties", "utf-8")
p.get('systemVersion')
p.set('env', 'sit3')
三、报告当中添加环境变量
3.1、思路:
准备文件A,待生成pytest用例数据后再copy文件A
3.2、执行:
pytest.main(
['-s', '-v',
'--alluredir', f'{
BASE_DIR}/report/xml/' + new_dir_name]) # 生成xml
pro_path = f'{
BASE_DIR}/report/xml/' + new_dir_name + '/'
dir_path = f"{
BASE_DIR}/test_datas/data_type/properties/windows/environment.properties"
p = Properties(dir_path, "utf-8")
p.set('environmentVersion', read_environment('env'))
mycopyfile(dir_path, pro_path)
command_word = f'allure generate {
BASE_DIR}/report/xml/{
new_dir_name} -o {
BASE_DIR}/report/html/{
new_dir_name} --clean'
os.system(command_word) # 执行cmd命令,生成html
有接不上的同学可以看下我之前的文章