python的unittest和pytest
去年自觉APPium自动化的时候有去看下unittest框架如何使用,也应用到了adroid APP Appium 自动化中,但最后并没有应用到实际工作中,也因要做功能测试并废弃了自动化的学习。
记得那时搞不清楚为啥有时执行没有按用例顺序执行,还出现每次执行结果都不一样的情况,当时一脸懵逼啊。。。。今天看到一篇好文就是专门讲这些坑的。
原文:https://www.cnblogs.com/xiaohuhu/p/9808653.html
原来python脚本在pycharm中执行有3种模式:unittest,pytest,普通模式
执行结果取决于pycharm所设置的运行模式。
若需要导出测试报告则使用普通运行模式,我python的版本是3.7.1版本的
1.导入HTMLTestRunner模块
(1)下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html,下载后放到python安装目录的Lib目录下。
(2)在python的IDLE中执行:import HTMLTestRunner
若没有报错则可以正常使用,
发现有报错:大概意思是没有StringIO这个模块,查了资料是因为这个插件的脚本是python2的版本,如果要在python3中使用需要修改一些脚本,主要是有写法不兼容。按文章https://www.cnblogs.com/rechin/p/8615268.html里的修改后保存就可以使用了。
(3)这个插件的关键点在:
if __name__ == '__main__':
print('hello world')
# unittest.main()
suite = unittest.makeSuite(ALILITest)
now = time.strftime('%Y-%m-%d %H_%M_%S',time.localtime())
report_path = "F:\report\" + now + '_result.html'
fp = open(report_path,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'ALILI测试报告',
description=u'ALILI用例执行情况:')
runner.run(suite)
fp.close()
runner.run(suite)
fp.close()
(4)使用普通模式执行完后在相应的目录生成测试报告
我的运行完成后测试报告中没有用例的打印内容,看了好一会没有发现原因
unitest和pytest对比
文章https://www.cnblogs.com/xiaohuhu/p/9804527.html里有讲得很清楚了,我自己只是先过一下知道两者有这些异同点,自己就只用过unittest框架简单在弄了个流程,出报告。现在看来pytest比unittest优,更适合用在项目中,后面边学边研究。
坚持!!!每天学一点!