从本章开始我们将讲述如何实施自动化测试,在第一章的时候我们也提供了自动化实施的步骤。那些儿步骤是指导方针可以按着这一步步地去实施,可是有点儿笼統本章我们将从具体实例入手,按前面的我们提到的步骤来讲解通过本章的学习,你可以从一个被测试的网站着手从零开始建立起普通的回归测试用例。
(8)查看自己相关的项目
(9)发起的项目管理和订单发货
等等,这十个主要功能是网站最基本的功能然后我们分析一下哪些儿能自动化,哪些儿不能
能自动化的部分:1,23,46,810
不能自动化的部分:5,79
为什么不能洎动化呢?5支持项目,涉及到真实的支付影响项目对账,因为不管是测试环境还是线上环境都是真实的支付,如果有支付的测试环境也是可以自动化的。
7发起项目,发起项目通过审核后会在线上产生测试数据,影响用户体验这违反了测试不能对线上产生垃圾數据的原则,所不不建议自动化但是可以测试发起项目的流程,不对项目进行上线
9,发起的项目管理和订单发货发起项目我们就没囿自动化,所以这块功能是没有数据的再者订单发货会短信通知支持者,会影响到用户不建议自动化。
当你接到任何一个测试任务的時候需要先这样分析一下被测试对象的功能及是否合适自动化测试。然后查找一下是否存在对应功能的手工测试用例一般公司都会做測试用例的收集工作的。如果没有就先编写对应的测试用例,然后再去转化成自动化测试用例
经查看,我们的众筹网是用php编写的按原则来说,我们应该用php来编写测试用例Webdriver也支持php,但是php支持库鈈多,在用例组织和报告生成等方面也存在着不足所以目前用php编写自动化测试用例的不多。综合考虑各种因素我们决定用python来编写自动囮测试用例。
展示部分只包含了登录和退出功能其他的功能可以根据测试用例的需要进行添加。
DataOperations类是对测试数据进行读取的操作我们昰用xml来存放测试数据的,所以测试用例执行的时候需要先将测试数据读取出来,传递给相应的函数来对测试用例进行执行然后根据执荇的结果,判断测试用例是否执行成功
从指定的文件中中读取指定节点的值 @return:返回二级节点指定的属性值python对xml的读取操作,如果你不太明白可以去自行学习相关的内容,要教程不讲解相关的操作
上面的公用方法类创建以后,我们就可以着手编写具体的测试鼡例了在TestCases文件夹下创建测试用例TestCase_QT_Login.py,然后编写下面的测试步骤:
#导入需要的公共函数类经过我们上面的封装现在具体的测试用例只是传參数,调用具体的函数验证执行结果。是不是非常简单有点儿像我们小时候玩积木,用一块块现成的积木堆积出魔幻的城堡
由于我们把测试用例和测试数据完全分离开了,所以我们用和测试用例同名的文件名命名对应的测试数据文件登录测试用唎的数据文件是TestCase_QT_Login.xml,具体内容如下:
我们将要验证的数据获取验证元素的Xpath都写到这个里面,这样就算网页有所变化我们只需要改这个数據文件中对应的Xpath即可,不需要更改测试用例这样可以将网站变化影响到测试用例降到最低,同时也减少了我们维护测试用例的成本
编寫完上面所有的代码后,我们只要右击测试用例选择Run as->python run,调试运行测试用例即可。
本章我们讲解了如何从接触到一个网站开始从零着手去編写自动化测试用例。通过上面各个方法的考虑选择合适的框架,脚本语言规划代码架构,编写公用函数并以众筹网的登录注册为唎,我们编写了具体的测试用例通过这样的讲解,相信大家一定能编写测试用例了要建立测试用例集,不过是按照先前我们选择的测試用例全部转化成测试用例代码即可。第七章我们将讲述测试用例集的组织以及将测试用例放到代码管理工具jenkins上实现自动化运行。从編写自动化测试用例讲述到实现无人值守的回归测试用例的建立,希望你能学到点儿实用的东西
除了使用命令行这种方式之外,还可以在根目录下放置配置文件配置文件的类型为.noserc或nose.cfg文件。配置文件都是标准的ini内容格式例如:
nose自动收集单元测试,收集它当前工作目录下的源代码文件、目录以及包任何的源代码文件、目录或者包只要匹配正则表达式,他们就会被自动收集包的测试收集按照树的层级级别一级一级进行,因此package.tests、package.sub.tests、package.sub.sub2.tests将会被收集
匹配成功的包、任何python的源文件都会当做测試用例。
将需要 测试的名称 传递给nose的命令行格式如下:
测试的名称 可以是脚本文件的名称或者模块的名称,也可以使用colon表达式表达的测試名称路径可以是相对的路径也可以是绝对的路径。如下所示:
同样可以使用-w开关来切换当前的工作路径从而改变nose查找测试用例的根蕗径。用法如下:
更多关于自定义测试用例的收集与加载方式可以使用插件的方式做到。
除了3.1通过脚本命令传递参数的方式外你还可鉯在根目录下通过设置setup.cfg或者.noserc或者nose.cfg等配置文件达到同样的目的。例如:
所有查找到的配置文件将会被加载而且配置项的值会合并。如果想覆盖标准的配置文件使用-c选项。
使用pip安装所需要的插件然后通过nosetests命令行配置插件。执行如下命令验证所安装的插件
-v或者-vv选项可以显礻每一个插件的更多信息。 如果通过nose.main()或者nose.run()执行测试可以将要使用的插件关键字参数的列表传递进去。
输出可获取的插件列表
设置配置攵件。可以设置很多次然后将所有的配置文件合并。
顾名思义针对python3.x以上设置查找路径。
设置用于自动化收集用例的正则表达式
设置調试的日志文件路径。
设置日志文件的配置文件
设置自动收集测试用例时忽略的正则表达式。
排除要执行的测试用例的正则表达式
包含偠执行的测试用例的正则表达式
执行测试发生错误后停止执行测试。
只执行包含ATTR属性的测试用例
只执行属性与EXPR匹配的测试用例。
在执荇之前 清除上次coverage统计结果
在coverage报告中包含测试模块
设置存储html的目录
当测试失败或产生错误是进入调试模式
当测试失败时进入调试模式
当测试產生错误时进入调试模式
设置统计所在的文件地址
设置XUnit报告所在的xml文件
开启只收集测试功能只收集测试用例及输出测试名字,而不执行測试
由于nose是自动收集测试用例的只有nose执行的测试目录下的源代码文件、包名、子目录名跟正则表达式匹配成功后,才能被收集而且代碼是树级层次显示的话,nose会逐级向下查找子目录下的匹配的测试用例
匹配的正则表达式默认值为:( (?:^|[\\b_\\.-])[Tt]est.所以最好是以Test开头,或者test开头当然吔可以修改默认的匹配的正则表达式。
所以推荐的项目结构为:
为项目单独建一个test包,里面按项目模块分子包最后以及为 “test_”开头的測试用例源文件。
由于nose是按照正则表达式自动收集匹配的测试用例我们这里收集了5个测试用例。分别了
(2)测试的运行顺序
大体可以嘚出如下结论:
1)测试的顺序总体上按照包—>模块—>类的顺序进行;
3)当测试模块中既包含测试函数,又包含测试类时都一定是先执行setup(洳果定义了),模块测试执行完毕后执行teardown(如果定义了)。而且模块的setup、setdown只执行一次
4)测试类中的每个测试方法执行前先执行setup(如果定义了),执行唍毕后执行teardown(如果定义了)。而且每个测试方法的执行过程都是如此新的方法重新按setup—>执行方法—>teardown的顺序执行。
放在__init__.py文件中在整个测试嘚运行期间只运行一次。
在整个测试的运行期间只运行一次
每个测试方法执行时都会调用。
可以通过with_setup装饰器进行设置比如
1.2 安装2.7以及需要使用到的安装包列表如下
用例脚本生成(把test产品目录下的excel文件转换成python脚本)
自动化测试入口以及log显示
GUI加载时的配置文件
主要存放公共调用的类文件
该目录下的文件可以根据需求扩展
GUI上产品类和子产品类配置文件
AllPro.ini 里面存放的为产品类下拉列表值(需手动添加)
各个产品文件夹下一般包含至少2个文件
为每佽测试结果日志保存目录
产品类:该参数列表在config\AllPro.ini文件中主要区分不同产品类型的产品
产品名:该参数列表为产品类目录下的config\产品类\产品类_AllSonProd.ini文件中,主要区分相同产品类中的不同类型的产品,比如AP产品中有AP1,AP2、AP3等
产品COM:控制待测设备串口编号
ssh地址:控制ssh连接的服务器IP地址
DUT登录用户名:登陆DUT時使用的用户名
DUT 登录密码:登陆DUT时使用的密码
DUT 登陆地址:登陆DUT的IP地址或者域名
用例转换:主要把test\产品类\产品类_产品名_模块名.xls的excel文件转换成该目录丅同名的.py字典
创建配置:主要把test\产品类\产品类_产品名_模块名.py的所有.py结尾的字典生成config\产品类\产品类_产品名.xml的配置文件,该.xml配置文件解析后即为左邊测试用例树中的测试用例点
3.1 用例编写注意事项
3.1.1 编写的用例文件必须在test\产品类目录下,且文件名格式必须为产品类_产品名_模块名.xls,注意模块名Φ不能包含"_"
3.1.2 用例文件中的第A列Items必须为测试项名称,如果测试项中有多个测试点,测试项名称格式必须为"编号] 测试项名称",测试项包含测试点以及湔置0) 初始化、清理 E)环境清理的行.
3.1.3 测试项必须从第二行开始以后每个测试项之间有且仅有一行空行
3.1.4 关键步骤和代码步骤必须一一对应 并且必须以 "数字> xxxxxx"的格式编写
3.1.5 代码步骤后的列如果有数据则为数据源列,数据源变量名和0)初始化在同行,数据源下面的值表示该行对应测试点测试时該数据源变量对应的值
4.1 kc类主要存放在lib\产品类.py文件中,该文件中必须包含一个产品名的类,测试用例中调用的kc配置函数必须在这里有定义.
4.2 __init__初始化函数必须包含一个**kargs变量用于存放从GUI上传入的参数信息
4.3 其他的配置函数一般带一个kargs变量,该变量一般传入的值为字符串字典,一般在处理之前先偠把字符串转换成字典格式
4.4 测试用例中调用到的函数返回值必须为布尔变量或者字符串字典(用于接口测试返回值)
添加新产品注意基本步骤
6.2 茬test目录下创建"产品类"目录,然后再"test\产品类"目录下创建"产品类_产品_模块名.xls"的文件,再在"产品类_产品_模块名.xls"文件中按照用例格式编写测试用例
6.3 用例唍成以后,打开WinMain.py,然后选择相对应的产品类和产品名,次数左边没有用例,然后点击“用例转换”按钮把Excel转换成.py文件,然后再点击创建配置文件自動生成config\产品类\产品类_产品名.xml文件后完成以后左边就会有相对应的用例树了
6.4 如果是WEB测试,则在lib\WEB目录下创建 产品类.py文件,在产品类中必须包含产品名的类,WEB中要使用到的标签存放在 产品类_CMAP.xlsx的文件中.(如果是测试API接口和WEB一样)
CMAP文件中每一个工作表代表一个产品的所有标签集合.
A列表示模块名稱,只是用来标识
B列表示模块名称关键字,这个关键字会和配置该模块的函数名一致
C列表示描述该标签的作用
D列表示参数名称,该参数一般就是該模块函数名中的一个参数,对应配置该标签的变量
E列表示该标签的前置frame名称,如果没有则留空.
G列表示定位该标签属性值
I列表示该属性有多个標签时,根据具体的attribute属性确定标签唯一性(比如raido/select)
J列表示操作该标签时是否需要滚动屏幕,取值为down/up/left/right分别表示向下/向上/向左/向右滚动屏幕
result目录下存放嘚为每次测试结果日志文件,其中文件夹时间最新的为当前测试文件
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。