联教测试部web自动化培训3unittest框架Word文档下载推荐.docx
- 文档编号:19107532
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:33
- 大小:1.17MB
联教测试部web自动化培训3unittest框架Word文档下载推荐.docx
《联教测试部web自动化培训3unittest框架Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《联教测试部web自动化培训3unittest框架Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
实现的代码:
代码:
#-*-coding:
utf-8-*-
fromseleniumimportwebdriver
fromimportSelect
importunittest,time,re
classLogin:
defsetUp(self):
=()
="
"
deftest_login(self):
'
'
checkloginsuccessorfail'
driver=
("
txtUserName"
).clear()
).send_keys("
)
txtPassword"
123123"
(2)
(u"
登录"
).click()
(1)
deftearDown(self):
if__name__=="
__main__"
:
(verbosity=2)
运行结果:
脚本讲解:
我们来详细的介绍下如上的代码和输出结果,导入了unittest,创建了测试的类(测试模块名称),继承TestCase,在测试固件中分别写的测试时候的初始化和测试结束后资源释放的代码,中间test_login是测试用例,也就是自动化的测试用例,在主函数中,直接调用main(),在main中加入verbosity=2,这样测试的结果就会显示的更加详细。
这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值
0(静默模式):
你只能获得总的测试用例数和总的结果比如总共100个失败20成功80
1(默认模式):
非常类似静默模式只是在每个成功的用例前面有个“.”每个失败的用例前面有个“F”
2(详细模式):
测试结果会显示每个测试用例的所有相关的信息
在编写的每个case中,可以加注释,这样在测试结果中,我们就知道该case是测试那个功能的,如上的截图,依据测试结果,我们就知道第一个testcase是测试登陆的。
1.2构建测试套件
在介绍测试模块的时候,借助unittest测试框架编写了一个简单的case,在节中,来介绍怎么构建测试套件,测试套件顾名思义就是测试用例的容器。
在说明测试套件的时候,以老师平板的项目为案例,来说明测试套件在项目中的实际应用。
新建testCase的package,在package中创建test_a1_login登陆模块和test_a10_safe_custody安全监护模块等,见目录结构
test_a10_safe_custody模块代码:
#coding:
utf-8
fromappiumimportwebdriver
fromtimeimportsleep
fromimportBy
importunittest,sys
./page'
fromimportAppTestCase
#安全监护
classSafe_custody(AppTestCase):
deftest_a1_Safe_custody(self):
首页-》安全监护'
安全监护'
deftest_a2_Safe_custody_bottom(self):
点击安全监护->
讲台->
底部'
"
deftest_a3_Safe_custody_top(self):
底部->
顶部'
if__name__=='
__main__'
(verbosity=2)
#
##构造测试集
#suite=()
#(Safe_custody("
test_a3_Safe_custody_top"
))
##执行测试
#runner=()
#(suite)
addTest的应用
当有多个或者几百测试用例的时候,这样就需要一个测试容器(测试套件),把测试用例放在该容器中进行执行,unittest模块中提供了TestSuite类来生成测试套件,使用该类的构造函数可以生成一个测试套件的实例,该类提供了addTest来把每个测试用例加入到测试套件中。
在weke模块中编写了测试使用到的方法,下来我们test_a10_safe_custody模块中编写几个测试用例,以实例的方式来说明addTest的应用,见wekeTest模块中的代码和执行结果截图:
#构造测试集
suite=()
(Safe_custody("
test_a1_Safe_custody"
test_a2_Safe_custody_bottom"
#执行测试
runner=(verbosity=2)
(suite)
依据执行结果的截图,可以很清楚的看到,先执行test_a1,至到test_a3,这是由如下代码决定的:
suite是测试套件的实例,调用addTest()方法添加需要执行的case,顺序可以依次来,或者按自己的想法来,添加case到测试套件后,调用unittest模块中TextTestRunner类的run()方法,传入参数为测试套件的实例suite。
使用addTest方法,可以实现把测试的case添加到测试套件suite中,但是我个人不建议使用addTest()方法,理由很简单,如果测试case很多,都得需要添加,感觉是重复造轮子。
makeSuite()
在介绍addTest()方法的时候,就说到了它的缺点,重复造轮子并不是想要的,但是代码还是得一步一步的重构。
在unittest框架中提供了makeSuite()的方法,makeSuite可以实现把测试用例类内所有的测试case组成的测试套件TestSuite,unittest调用makeSuite的时候,只需要把测试类名称传入即可。
把上面的代码使用makeSuite重构后为:
代码重构:
suite=(Safe_custody))
运行结果:
利用makeSuite方法,就不需要担心有多少个case了,只需要把测试的类传入即可。
TestLoader()
TestLoader用于创建类和模块的测试套件,一般的情况下,使用
TestLoader().loadTestsFromTestCase(TestClass)来加载测试类。
"
#suite=(Safe_custody))
suite=().loadTestsFromTestCase(Safe_custody)
实现结果:
discover()
discover是通过递归的方式到其子目录中从指定的目录开始,找到所有测试模块并返回一个包含它们对象的TestSuite,然后进行加载与模式匹配唯一的测试文件,discover参数分别为discover(dir,pattern,top_level_dir=None)。
修改下之前的模块,把测试脚本的模块放在TestCase的模块下,把被调用测试的文件放在Page的模块下,见调整后的目录截图:
截图显示为调整后的目录结构,分别讲一个测试用例和run_teacherspad_test。
的实现源码。
test_a10_safe_custody模块的代码:
fromimportTouchAction
classtask_online(AppTestCase):
#今日任务-上课
deftest_a1_attend_class1(self):
点击上课'
#今日任务-作业待改
deftest_a2_job_to_be_changed(self):
今日任务->
作业待改'
#今日任务-在线答疑
deftest_a3_task_online(self):
点击在线答疑'
).click()
#今日任务-在线答疑-查看全部
deftest_a4_task_onlineAll(self):
点击在线答疑-查看全部'
lick()
#今日任务-在线答疑-查看第一个学生的所有在线答疑
deftest_a5_task_online_OneStu(self):
点击在线答疑-查看第一个学生的所有在线答疑'
#今日任务-在线答疑-查看第一个(最新)提问详情
deftest_a6_task_online_firstQuestion(self):
点击在线答疑-查看第一个提问详情(列表中最新的问题)'
#今日任务-在线答疑-答复第一个(最新)提问
deftest_a7_task_online_firstQuestion_reply1(self):
点击在线答疑-使用文字答复第一个提问(列表中最新的问题)'
).send_keys(u'
你好'
deftest_a8_task_online_firstQuestion_reply2(self):
点击在线答疑-使用音频答复第一个提问(列表中最新的问题)'
touch=TouchAction
),5).perform()
#今日任务-在线答疑-公开第一个在线答疑
deftest_a9_task_online_firstQuestion_isPublic(self):
点击在线答疑-公开第一个提问(列表中最新的问题)'
#今日任务-在线答疑-不公开第一个在线答疑
deftest_a10_task_online_firstQuestion_isNotPublic(self):
点击在线答疑-不公开第一个提问(列表中最新的问题)'
#今日任务-在线答疑-第一个在线答疑-推荐课程
deftest_a12_task_online_firstQuestion_courses(self):
点击在线答疑-第一个提问(列表中最新的问题)-推荐课程'
#今日任务-在线答疑-搜索
deftest_a13_task_online_search(self):
点击在线答疑-搜索'
#今日任务-在线答疑-搜索(班级)
deftest_a14_task_online_search1(self):
点击在线答疑-搜索-按班级搜索(三
(1)班)'
#今日任务-在线答疑-搜索(发起人)
deftest_a15_task_online_search2(self):
点击在线答疑-搜索-按发起人搜索'
).send_keys('
01'
#今日任务-在线答疑-搜索(日期)
deftest_a16_task_online_search3(self):
点击在线答疑-搜索-按日期搜索'
#今日任务-在线答疑-搜索(结合搜索:
班级、发起人、日期)
deftest_a17_task_online_search4(self):
点击在线答疑-搜索-按班级、发起人、日期搜索'
#今日任务-在线答疑-退出
deftest_a18_task_online_search_return(self):
点击在线答疑-搜索-退出在线答疑界面返回老师平板主界面'
#今日任务-申诉
deftest_task_appeal(self):
点击申诉'
#执行所有用例
把测试执行的代码写在allTests的模块,该模块的源码为:
#!
/usr/bin/envpython
utf-8
importHTMLTestRunner
importunittest
importtime
importos,sys
reload(sys)
('
utf-8'
#定义测试用例的目录为当前目录的testcase目录
test_dir='
./teacherspad/testCase'
discover=pattern='
test*.py'
if__name__=='
now_time=("
%Y-%m-%d%H_%M_%S"
fp=open("
./teacherspad/report/"
+now_time+'
.html'
"
wb"
runner=(
stream=fp,
title=u'
老师平板测试报告'
description=u'
用例执行情况:
#runner=()
(discover)
()
注释:
对如上的代码进行解释,
)是对discover的应用,第一个参数是放testcase的目录,第二个是使用了正则表达式,匹配目录下所有的测试模块,第三个参数默认为None
1.3执行测试
在unittest的模块中,提供了TestRunner类来进行运行测试用例,在实际的应用中,经常使用的是TextTestRunner类,执行后,会已文字的形式打印出测试结果,见测试代码和执行结果截图:
fromappiumim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测试 web 自动化 培训 unittest 框架
![提示](https://static.bdocx.com/images/bang_tan.gif)