Pytest接口自动化-Allure报告中添加环境变量

一、背景:

目前在做接口自动化生成测试报告的过程中,比较火的就是结合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

有接不上的同学可以看下我之前的文章

3.3、效果展示:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_52358204/article/details/127927598