adonislu 2020-06-26
import os # 获取项目所在的绝对路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 用例模块所在的目录路径 CASE_DIR = os.path.join(BASE_DIR, "testcases") # 用例数据所在的目录路径 DATA_DIR = os.path.join(BASE_DIR, "data") # 配置文件所在的目录路径 CONF_DIR = os.path.join(BASE_DIR, "conf") # 测试报告所在的目录路径 REPORT_DIR = os.path.join(BASE_DIR, "reports") # 日志文件所在的目录路径 LOG_DIR = os.path.join(BASE_DIR, "logs")
import re from common.handle_config import conf class EnvData: """定义一个类,用来保存用例执行过程中,提取出来的数据(当成环境变量的容器)""" pass def replace_data(data): """替换数据""" while re.search("#(.*?)#", data): res = re.search("#(.*?)#", data) # 返回的式一个匹配对象 # 获取匹配到的数据 key = res.group() # 获取匹配规则中括号里面的内容 item = res.group(1) try: # 获取配置文件中对应的值 value = conf.get("test_data", item) except: # 去EnvData这个类里面获取对应的属性(环境变量) value = getattr(EnvData, item) data = data.replace(key, value) return data
实例代码
@ddt class TestAdd(unittest.TestCase): excel = HandleExcel(os.path.join(DATA_DIR, "apicases.xlsx"), "add") cases = excel.read_data() db = HandleMysql() @classmethod def setUpClass(cls): """用例执行的前置条件:登录""" # 准备登录的相关数据 url = conf.get("env", "url") + "/member/login" data = { "mobile_phone": conf.get("test_data", "phone"), "pwd": conf.get("test_data", "pwd") } headers = eval(conf.get("env", "headers")) response = request(method="post", url=url, json=data, headers=headers) res = response.json() member_id = str(jsonpath.jsonpath(res, "$..id")[0]) token = "Bearer" + " " + jsonpath.jsonpath(res, "$..token")[0] # 将提取出来的数据保存为EnvData这个类的属性(环境变量) setattr(EnvData, "member_id", member_id) setattr(EnvData, "token", token)
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin
写脚本涉及到数据库的配置信息,然后上面要求这种关键信息不能体现到脚本中,哦,那怎么办,那我去哪里读取数据库信息呢?从运行脚本的机器的环境变量里读取数据库信息,这样脚本中全是代码,就没有明文配置信息了。