综合单元测试到配置文件这几次课所学,我们已经有了框架搭建的思维,下面就开始项目的框架搭建
框架搭建/框架设计
框架就是一个自动化测试项目要运行并得出测试结果所需要的所有数据的组合,包括自动化测试用例,运行文件,测试数据,被测函数,配置文件等
而项目是一个文件夹,里面存放很多包和文件夹 分别归类好存放相应的代码和数据 包是存放含有.py的文件,能被代码调用
一个自动化测试的任务,最重要的代码是自动化测试用例
以test开头的py文件都是自动化测试用例
执行测试用例的代码(run.py,包含收集测试用例,运行用例得到测试报告)
组织代码,创建包,管理模块
一个框架里面需要分类好各种文件和代码的存放位置,这样方便我们以后调用或者维护,只需要找到相应的存放位置就行
-自动化测试的用例的位置
自动化测试用例的路径,放到一个固定的包(test_cases)里,这个包的位置是在项目根目录(文件夹)下
-收集用例,执行用例,得到报告的位置(run.py)
执行文件放在根目录下
-测试数据的位置
测试数据统一放到一个固定的文件夹(test_data)里,这个包的位置是在项目根目录(文件夹)下
-自动化测试中被调用的函数/方法
如 读取测试数据的函数,被测函数,其他已经封装好的,能被其他项目调用的函数/方法
统一放到一个固定的包(common)里,这个包的位置是在项目根目录(文件夹)下
当换了一个项目时,common文件夹可以原封不动的复制到新的项目中,被新的项目的测试用例去调用,只需要添加新的被测函数
而其他的包或者文件夹里的模块,需要修改部分的代码
-配置文件的位置
统一放到一个固定的包(config)里,因为配置文件也可以是py文件,这个包的位置是在项目根目录(文件夹)下
以上都是需要我们手工去创建包或者文件夹
下面的是根据代码运行自动生成文件夹
-测试报告的位置
运行run.py之后会自动在项目根目录下生成report文件夹
-日志文件的位置
在调用get_logging函数的参数中输入需要手工输入Log文件夹的位置,默认位置是get_logging函数所在的位置
搭建完成
项目搭建完成之后,我们还需要对它进行路径的优化
框架路径优化
-包/文件夹路径优化
导入包/模块需要从项目根目录开始
所以开始项目之前,最好把该项目作为根目录打开,如果项目不是作为根目录的话,最好手动设置成临时根目录
不然的话导包的时候会报错,找不到该模块,如果从其他根目录作为绝对路径开始导入,项目发生移动的时候路径发生改变也会导包失败
-logger
要注意调用这个函数的时候只能调用1次 不然会记录多次记录,不要再测试用例方法里面调用,最好在类的外面调用
-动态文件获取路径
当项目移动了之后,需要改动模块里的文件路径,如果很多模块都使用了这个文件,那么就需要一个一个模块去改
为了方便管理,应该把文件的路径放到配置文件.py里面,并且用代码动态管理
导入os
import os
获取当前文件的绝对路径
#当前文件的绝对路径 print(os.path.abspath(__file__))
获取文件的目录,首先要有当前文件的路径,相当于获取参数所在的目录路径 当前文件(参数)的上一层的路径
#获取某个文件的目录 file_path = os.path.abspath(__file__) dir_path = os.path.dirname(file_path)
路径的拼接,创建新文件之后,要管理新文件的路径 当前文件(参数)的下一层的路径
#路径拼接--相当于在两个字符串之间加入 run = os.path.join(dir_path,"run.py")
总结:动态获取路径的好处,当项目发生了移动的时候(提交到svn,换一个环境等),文件的路径会随代码而改动,不需要手动修改文件路径
#获取config.py 当前文件的路径 import os current_path = os.path.abspath(__file__) print(current_path) #获取配置文件目录(config)的路径 config_dir = os.path.dirname(current_path) print(config_dir) #项目根目录的路径 root_dir = os.path.dirname(config_dir) print(root_dir) #测试数据(data)的路径 test_data_dir = os.path.join(root_dir,"test_data") print(test_data_dir) #测试用例文件路径 case_file = os.path.join(test_data_dir,"cases01.xlsx") print(case_file) #自动化测试用例的路径 test_cases_dir = os.path.join(root_dir,"test_cases") print(test_cases_dir) #生成log日志文件夹的路径 log_file = os.path.join(root_dir,"log") print(log_file) #log文件的路径 log_1_file = os.path.join(log_file,"test.log") print(log_1_file)
一个框架里所需要用到的文件路径,统一保存到一个py配置文件中



