接口自动化配置文件
简单写一个接口自动化测试配置文件,使用的是pytest框架

这是整个接口自动化测试工程框架
一、首先是需要一个主要配置文件pytest.ini文件

addopts 设置自定义执行参数,pytest运行时以此设置为默认执行选项
addopts常见选项有:
-k:指定关键字表达式执行用例
-q:安静模式,不输出环境信息
-v:显示更详细的用例执行信息
-s:显示执行过程中print内容
-m:按照指定的标签执行
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True
是一个特殊的配置项,主要用于控制测试 ID 的转义行为,简单说明就是执行过程中出现中文乱码情况,可以使用此代码自动转码
除此之外还有pytest.ini常见选项还有:
testpaths设置执行路径,如果执行用例不指定目录时,就会在这个选项设置的路径中去查找用例并执行,可配置多个,用逗号隔开
norecursedirs不搜索执行对应文件夹下的用例,和testpaths相反
markers注册标签,如果注册,运行过程中标签会警告
例如:
markers=A
B
putong
maoyan
二、config配置文件和读取配置文件方法
config.ini格式

读取config.ini配置文件,这里主要写了3中方法
1.获取扇区内容
2.给扇区里面设置选项和值
3.增加新的扇区
具体代码如下:
点击查看代码
CONFIG_BASE=os.path.dirname(os.path.abspath(__file__))
class Config:
def __init__(self,filename):
# 传入一个文件(ini格式)
self.filename=filename
# 创建自带的工具configparser(专门处理ini格式)来处理这个文件
self.cf=configparser.ConfigParser()
# 因为这个工具改变原来的大小写optionxform,所以要用这个工具自带的方法来不改变大小写
self.cf.optionxform=str
# 读取文件内容(要给文件路径,文件名)
self.cf.read(CONFIG_BASE,filename)
def get_runtime(self,section,option):
"""获取扇区内容-需要给扇区和选项,返回相应值"""
self.cf.get(section,option)
def set_runtime(self,section,option,value):
"""给指定的扇区设置对应的选项和值"""
self.cf.set(section,option,value)
# set方法的作用是:在内存中修改配置(还没写到文件里)
# 直接操作文件就像「用记事本手动改配置」,容易出错且麻烦;
# 而 set 方法配合 configparser 就像「用专门的配置编辑工具」,会自动处理格式、保留原有内容、应对各种特殊情况,让代码更简洁、可靠
# 所以先用set方法,然后再对配置文件进行添加和修改
with open(CONFIG_BASE,'w+') as f:
self.cf.write(f)
def add_section(self, section):
"""添加一个新扇区"""
## 向配置中添加一个新的section
self.cf.add_section(section)
#以读写的方式打开文件
with open(self.log_path, 'w+') as f:
#将配置写入文件返回值
return self.cf.write(f)
#self.cf.add_section(扇区):用于添加一个新的配置节 (扇区),比如在 INI 文件中添加 [Database] 这样的节
#如果要设置键值对,必须先有对应的节,否则会报错
#self.cf.set(section, option, value):用于在指定的节中设置键值对,比如在 [Database] 节中设置 host=localhost
点击查看代码
def get_yaml(file):
"""获取yaml文件内容"""
with open(file,encoding='utf8') as f:
yaml.safe_load(f)
def get_yaml_ids(file):
"""获取yaml文件里面的case_desc的值==ids"""
#调用get_yaml()方法获取yaml里面的内容作为数据
datas=get_yaml(file)
#循环遍历数据里面的值,遍历一次返回一次case_desc的值
for data in datas:
#之所以使用yield,因为yield不会一次性返回所有case_desc的值,调用一次返回一次
yield ['case_desc']
#yield的作用是将函数变成一个装饰器,每迭代一次,返回一个值
def ids_data(file):
"""将返回的ids值处理成字典形式"""
datas=get_yaml(file)
ids=get_yaml_ids(file)
return {"argvalues":datas,"ids":ids}
#使用ids_data(file)方法,需要在用例里面给出文件地址,然后使用参数化形式将ids值传入
#但是传入时需要解构(**ids_data(file)),这样ids的值就是ids,argvalues的值是datas
#例如:file=os.path.join(文件地址,文件名),pytest.mark.parametrize(‘datas’,**ids_data(file))

浙公网安备 33010602011771号