51Testing软件测试论坛
标题:
Python的unittest自动化测试框架
[打印本页]
作者:
马琰的春天
时间:
2018-4-4 15:02
标题:
Python的unittest自动化测试框架
项目代码越来越复杂,并且对质量要求越来越高,就开始需要自动化测试。
测试框架对比
python有很多自动化测试框架可以选择:
python自带的unittest
第三方的Robot Framework
其他第三方测试框架:PyUnit等
对开发人员来说,一般不想在测试上花太多时间,因此希望这个测试框架容易学习、使用方便,功能不用很强大,
但可以满足一般需要。
公司有团队使用Robot Framework,这个测试框架会在python上加一个中间层,并要求使用一种中间语言来编
写案例。这种中间语言的好处是方便非开发人员编写测试案例,并且方便系统集成(比如通过图形化的工具创建
案例)。但对python开发人员是大大增加了学习和使用的成本,所以开发人员一般不是很想使用。
对于其他第三方测试框架,没有详细了解过。个人觉得如果和python自带的差不多的话,选自带的就好了。
所以还是觉得使用unittest比较好。
unittest基本使用
unittest的使用非常简单。需要定义TestCase类的派生类,其中每一个“test_”开头的函数都是一个测试案例,如:
import unittest
class Test1(unittest.TestCase):
def test_case1(self):
self.assertTrue(True)
def test_case2(self):
self.assertTrue(True)
保存并运行test.py(-v选项是输出详细信息):
python -m unittest -v test
只执行test.Test1的测试案例:
python -m unittest -v test.Test1
只执行test.Test1.test_case1案例:
python -m unittest -v test.Test1.test_case1
复制代码
结合seleium测试网站
如果要测试网站,可以使用unittest结合selenium控制浏览器打开网页,并检查网页。selenium提供丰富的API,
还可以实现点击按钮、执行js等操作。比如这段代码实现了打开百度网页、检查"百度一下"按钮的自动化测试:
import unittest
from selenium import webdriver
class Test1(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
self.addCleanup(self.browser.quit)
def test_case1(self):
self.browser.get('http://www.baidu.com')
self.browser.find_element_by_xpath(u'//input[@value="百度一下"]')
HTML报告
复制代码
如果觉得unittest的屏幕输出太单调(或者说混乱),可以使用HTMLTestRunner。这个工具可以调用unittest执
行测试,把测试结果输出为html文件。打开html可以看到用不同颜色区分的案例测试结果,可以折叠或展开案
例,并看到案例对应的屏幕输出。
python ~/third_party/HTMLTestRunner.py test #执行test.py
作者:
虫王戮蛊
时间:
2018-4-4 15:45
感觉这种执行的还没有RF有结构。用Python2.7可以有ride界面编写模板,比这个简单而且简单多了
作者:
海海豚
时间:
2018-4-4 15:53
谢谢分享~
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2