51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1686|回复: 2
打印 上一主题 下一主题

Python的unittest自动化测试框架

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-4 15:02:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目代码越来越复杂,并且对质量要求越来越高,就开始需要自动化测试。

测试框架对比

python有很多自动化测试框架可以选择:

python自带的unittest
第三方的Robot Framework
其他第三方测试框架:PyUnit等
对开发人员来说,一般不想在测试上花太多时间,因此希望这个测试框架容易学习、使用方便,功能不用很强大,
但可以满足一般需要。

公司有团队使用Robot Framework,这个测试框架会在python上加一个中间层,并要求使用一种中间语言来编
写案例。这种中间语言的好处是方便非开发人员编写测试案例,并且方便系统集成(比如通过图形化的工具创建
案例)。但对python开发人员是大大增加了学习和使用的成本,所以开发人员一般不是很想使用。

对于其他第三方测试框架,没有详细了解过。个人觉得如果和python自带的差不多的话,选自带的就好了。

所以还是觉得使用unittest比较好。

unittest基本使用

unittest的使用非常简单。需要定义TestCase类的派生类,其中每一个“test_”开头的函数都是一个测试案例,如:

  1. import unittest
  2. class Test1(unittest.TestCase):
  3.     def test_case1(self):
  4.         self.assertTrue(True)

  5.     def test_case2(self):
  6.         self.assertTrue(True)
  7. 保存并运行test.py(-v选项是输出详细信息):

  8. python -m unittest -v test
  9. 只执行test.Test1的测试案例:

  10. python -m unittest -v test.Test1
  11. 只执行test.Test1.test_case1案例:

  12. python -m unittest -v test.Test1.test_case1
复制代码

结合seleium测试网站

如果要测试网站,可以使用unittest结合selenium控制浏览器打开网页,并检查网页。selenium提供丰富的API,
还可以实现点击按钮、执行js等操作。比如这段代码实现了打开百度网页、检查"百度一下"按钮的自动化测试:

  1. import unittest
  2. from selenium import webdriver

  3. class Test1(unittest.TestCase):

  4.     def setUp(self):
  5.         self.browser = webdriver.Firefox()
  6.         self.addCleanup(self.browser.quit)

  7.     def test_case1(self):
  8.         self.browser.get('http://www.baidu.com')
  9.         self.browser.find_element_by_xpath(u'//input[@value="百度一下"]')
  10. HTML报告
复制代码


如果觉得unittest的屏幕输出太单调(或者说混乱),可以使用HTMLTestRunner。这个工具可以调用unittest执
行测试,把测试结果输出为html文件。打开html可以看到用不同颜色区分的案例测试结果,可以折叠或展开案
例,并看到案例对应的屏幕输出。

python ~/third_party/HTMLTestRunner.py test  #执行test.py

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    擦汗
    2020-9-4 09:16
  • 签到天数: 246 天

    连续签到: 1 天

    [LV.8]测试军长

    2#
    发表于 2018-4-4 15:45:49 | 只看该作者
    感觉这种执行的还没有RF有结构。用Python2.7可以有ride界面编写模板,比这个简单而且简单多了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-17 20:41 , Processed in 0.065168 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表