当前位置: 首页 > wzjs >正文

织梦网站怎么更换模板红安建设局网站

织梦网站怎么更换模板,红安建设局网站,动漫制作就业方向,google搜索网址实现需求2:有两种运行测试的方式:通过config配置文件运行,测试只需要修改config配置文件cmdline 运行这里是新建一个config类来存储所有的测试配置,以后配置有修改的话也只需要修改这个类。根据目前的测试需求,config中…

实现需求2:

有两种运行测试的方式:

  1. 通过config配置文件运行,测试只需要修改config配置文件
  2. cmdline 运行

这里是新建一个config类来存储所有的测试配置,以后配置有修改的话也只需要修改这个类。

根据目前的测试需求,config中有以下几个属性:

属性作用备注
list_test        按case list的flag,为True时生效
single_test单条运行case的flag,为True时生效
repeat      

case重复运行的次数

risk_analysis高风险case分析功能暂未实现
tester              测试者的用户名,作为测试者发送邮件的收件人
case_list存储测试case集,从这里取出需要运行的测试

具体类代码为:

class TestConfig:"""测试配置管理"""_results_file = "test_results.json"_test_history = {}def __init__(self,list_test=False, single_test=False, repeat=1, case_list=None, risk_analysis=False,tester = None):self.list_test = list_testself.single_test = single_testself.repeat = repeatself.case_list = case_listself.risk_analysis = risk_analysisself.tester = tester

虽然有两种运行脚本的方式,但是通过这两种方式获取的信息都会填充到config这个类中,然后从这个类中读取当前需要运行的配置信息。 默认从配置文件中读取测试信息,当配置文件不存在时,从cmdline中读取测试信息。

图一 配置信息读取流程

最上层代码实现:

    def get_test_config(self, config):"""1. read config from config file2. check flag of test config . if true , read test config from config fileif false , read test config from cmdline:param config: Object of Class TestConfig"""split_str = "="config_list = self.read_config_from_file(CONFIG_FILE)run_from_cfg_file = ast.literal_eval(config_list[0].split(split_str)[1].strip())if run_from_cfg_file:logger.info("reading test config from config file ......")self.parse_settings_to_config(config_list, config)else:self.read_config_from_cmdline(config)logger.info("getting test config from cmdline ......")

读取配置文件

配置文件中包含两类信息:

  1. 当前配置文件是否有效的flag(True or False),后面会根据这个flag来决定读取config file还是cmdline
  2. 测试的具体信息,用于填充TestConfig对象的

代码实现:返回一个包含配置信息的list

    def read_config_from_file(self, file_path):# config_file = "config_file.txt"# # get path of config_file.txt# file_path = os.path.join(os.getcwd(), config_file)config_list = []# check if config file is exist# if self.__file_exist_check(file_path):if self.config_file_status(file_path):try:with open(file_path) as file_handle:lines = file_handle.readlines()for line in lines:config_list.append(line.strip())except FileNotFoundError as e:logger.exception(f"file not found:{e}")except PermissionError as e:logger.exception(f"No permission to read the file:{e}")except Exception as e:logger.exception(f"file not found: {e}")return config_list   # config_list 正确else:logger.error("Config file is not exist....Please check again,Test Stop......")exit()

配置文件config_file.txt的内容为:

 --use_config=False
--list_test=True
--single_test=False
--case_list =test_list.txt
--repeat=15
--risk_analysis=False
--tester=TestUser

判断是否使用配置文件

通过run_from_cfg_file 这个flag来判断是读取配置文件还是读取cmdline

"""flag of run method ,from config file , or from cmdline
"""
run_from_cfg_file = False# config_list 为read_config_from_file()返回的config list
run_from_cfg_file = ast.literal_eval(config_list[0].split(split_str)[1].strip())if run_from_cfg_file:logger.info("reading test config from config file ......")self.parse_settings_to_config(config_list, config)else:self.read_config_from_cmdline(config)logger.info("getting test config from cmdline ......")

若run_from_cfg_file 为True,则从配置文件中读取测试配置并调用方法parse_settings_to_config()填充到TestConfig对象中

# fill test settings to TestConfig objectdef parse_settings_to_config(self, arg_list, config):split_str = "="for item in arg_list:if "--list_test" in item:config.list_test = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--single_test" in item:config.single_test = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--case_list" in item:config.case_list = item.split(split_str)[1].strip()elif "--repeat" in item:config.repeat = item.split(split_str)[1].strip()elif "--risk_analysis" in item:config.risk_analysis = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--tester=TestUser" in item:config.tester = item.split(split_str)[1].strip()

若run_from_cfg_file 为False,则调用方法read_config_from_cmdline()将cmdline中的配置填充到TestConfig配置中去。

 def get_cmdline_args(self):list = sys.argvreturn listdef read_config_from_cmdline(self,config):self.parse_settings_to_config(self.get_cmdline_args(),config)

至此通过配置文件和cmdline分别获取测试配置信息的task就已经完成了。读取配置信息的工作都是在tef_funtcion.py中的class FunctionApi中来完成的。完整代码为:

"""
this file is api preset for test, all test function tool that needed is included in this python file
"""
import ast
import os.path
import sysfrom utils.TestLogger import TestLogger as TestLoggerconfig_file = "config_file.txt"
# get path of config_file.txt
CONFIG_FILE = os.path.join(os.getcwd(), config_file)"""flag of run method ,from config file , or from cmdline
"""run_from_cfg_file = False
logger = TestLogger().get_logger()class FunctionApi:# fill test settings to TestConfig objectdef parse_settings_to_config(self, arg_list, config):split_str = "="for item in arg_list:if "--list_test" in item:config.list_test = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--single_test" in item:config.single_test = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--case_list" in item:config.case_list = item.split(split_str)[1].strip()elif "--repeat" in item:config.repeat = item.split(split_str)[1].strip()elif "--risk_analysis" in item:config.risk_analysis = ast.literal_eval(item.split(split_str)[1].strip())  # transfer from string to bool typeelif "--tester=TestUser" in item:config.tester = item.split(split_str)[1].strip()def get_cmdline_args(self):list = sys.argvreturn listdef read_config_from_cmdline(self,config):self.parse_settings_to_config(self.get_cmdline_args(),config)def __file_exist_check(self, file_path):if os.path.exists(file_path):return Trueelse:logger.error(f"File {file_path} does not exist.")return Falsedef read_case_from_list_file(self):test_list = "test_list.txt"# get path of test_list.txtfile_path = os.path.join(os.getcwd(), test_list)# print("os.path.abspath:", os.path.abspath(__file__))  #获取当前文件的绝对路径C:\code\USBTestAndroid\utils\api.py# print("os.getcwd()", os.getcwd())                     #获取调用该函数的项目路径C:\code\USBTestAndroid# print("file path :", file_path)case_list = []try:with open(file_path) as file_handle:lines = file_handle.readlines()for line in lines:case_list.append(line.strip())except FileNotFoundError as e:logger.error(f"file not found:{e}")except PermissionError as e:logger.error(f"No permission to read the file:{e}")except Exception as e:logger.error(f"file not found: {e}")return case_listdef config_file_status(self, file_path):"""check if config file is exist:return: True ,exist;False not exist"""return self.__file_exist_check(file_path)def read_config_from_file(self, file_path):config_list = []if self.config_file_status(file_path):try:with open(file_path) as file_handle:lines = file_handle.readlines()for line in lines:config_list.append(line.strip())except FileNotFoundError as e:logger.exception(f"file not found:{e}")except PermissionError as e:logger.exception(f"No permission to read the file:{e}")except Exception as e:logger.exception(f"file not found: {e}")return config_list   # config_list 正确else:logger.error("Config file is not exist....Please check again,Test Stop......")exit()def get_test_config(self, config):"""1. read config from config file2. check flag of test config . if true , read test config from config fileif false , read test config from cmdline:param config: Object of Class TestConfig"""split_str = "="config_list = self.read_config_from_file(CONFIG_FILE)run_from_cfg_file = ast.literal_eval(config_list[0].split(split_str)[1].strip())if run_from_cfg_file:logger.info("reading test config from config file ......")self.parse_settings_to_config(config_list, config)else:self.read_config_from_cmdline(config)logger.info("getting test config from cmdline ......")

下面的工作就是利用读取到的配置信息开始测试。

run_test.py:

    logger.info("Starting test execution...")config = TestConfig()functionApi.get_test_config(config)run_pytest(config)


文章转载自:

http://a72xBpeS.wsrcy.cn
http://6RQkOxBC.wsrcy.cn
http://htNldqpv.wsrcy.cn
http://6PIrDAMn.wsrcy.cn
http://bMAMyXZP.wsrcy.cn
http://iVZptIgg.wsrcy.cn
http://BqWmf3ni.wsrcy.cn
http://mpyhtr1T.wsrcy.cn
http://l0yz0lTo.wsrcy.cn
http://c4AheVEU.wsrcy.cn
http://0x7giS4A.wsrcy.cn
http://TfwyvfyP.wsrcy.cn
http://BwAPAnlK.wsrcy.cn
http://xOrtmBRU.wsrcy.cn
http://th0EAArq.wsrcy.cn
http://BL9bkrq9.wsrcy.cn
http://pHk7UXyw.wsrcy.cn
http://6JDHH2dC.wsrcy.cn
http://u4FM2xPn.wsrcy.cn
http://ovVtduvw.wsrcy.cn
http://OdQTZymJ.wsrcy.cn
http://Ejr7DD29.wsrcy.cn
http://KyUYZckz.wsrcy.cn
http://X3YPvFDL.wsrcy.cn
http://k0uJkwwm.wsrcy.cn
http://dz7yWjIE.wsrcy.cn
http://updJFqIk.wsrcy.cn
http://Q0nZTnwA.wsrcy.cn
http://Q5GjV0Nx.wsrcy.cn
http://ND2c0LjH.wsrcy.cn
http://www.dtcms.com/wzjs/759049.html

相关文章:

  • 公司网站是怎么样的做网站的服务器要什么格式
  • 网站排名优化培训电话佛山做网站需要多少钱
  • 石家庄seo网站优化电话新闻类网站怎么建设
  • 重庆个人网站建设全景网站怎么做
  • 品牌型 网站建设ps软件是干什么用的
  • 视频剪辑师要学多久成都seo优化外包公司
  • 杭州手机申请网站登录深圳网站建设-猴王网络
  • 韩城建设局网站动漫做的游戏 迅雷下载网站有哪些
  • 薛华成 旅游网站建设做网站备案是承诺书是啥
  • 杭州互助盘网站开发网站建设执招标评分表
  • 工作室 网站建设最近热点新闻大事件
  • 章丘区网站建设怎么弄网站
  • 为什么网站建设杭州设计公司老总被点火
  • 男人与女人做视频网站域名和网站
  • 室内设计网站有哪些比较好WordPress编辑器过滤
  • 石家庄 外贸网站建设英国零售电商网站开发
  • 招聘网站开发学徒手机上的网站设置方法
  • 中国水利建设网站wordpress可视化采集
  • 擦边球网站做国内还是国外好蚂蚁分类信息网站建设
  • 南京网站优樱化it运维需要学哪些知识
  • 网站建设的会计分录wordpress给用户自动注册
  • 去哪里学做网站app网站轮播广告代码
  • 菏砖网站建设利于优化的网站模板
  • 呼和浩特建设厅网站前端做一个网站需要些什么软件
  • 济南网站制作设计公司湘潭市网站建设科技有限公司
  • 台州做网站优化哪家好上海市民营企业100强
  • 高端网站设计思路wordpress数据 架构
  • python网站开发源码软件开发费
  • 如何设计公司网站维护公司
  • 东莞汽车总站停止营业网站指定关键词优化