51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1394|回复: 0
打印 上一主题 下一主题

Python自动化测试框架,谁才是你的唯一?

[复制链接]
  • TA的每日心情
    擦汗
    前天 09:02
  • 签到天数: 1042 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-10-28 14:18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Python得天独厚的优势造就了一系列测试框架,在这些测试框架面前,孰优孰劣?具体该如何选择?
      俗话说 “没有最好的,只有最合适的”,今天我们就Python当前使用较为频繁的4大主流自动化测试框架, 来一回比拼,从中挑选最为合适你当前项目需求的那一款。
      ·Robot Framework
      ·Unittest
      ·Nose2
      ·Pytest
      1.框架初探
      Robot Framework
      Robot Framework,简称RF,是一个基于Python的开源自动化测试框架,以关键字形式来创建测试用例。其表格样式的用例编写模式,丰富的库和工具集,以及其并行测试等强大功能,使得RF 在测试人员中非常受欢迎。
      RF主要应用于验收测试和测试驱动开发(Test-driven development)这两个场景。此外,RF还支持在Windows、Mac OS和Linux等跨平台上进行桌面应用、移动应用、Web应用等的自动化测试。
      【 Robot Framework —— Demo】
    1. *** Settings ***
    2. Library SeleniumLibrary
    3. *** Variables ***
    4. ${SERVER} localhost:7272
    5. ${BROWSER} Firefox
    6. ${DELAY} 0
    7. ${VALID USER} demo
    8. ${VALID PASSWORD} mode
    9. ${LOGIN URL} http://${SERVER}/
    10. ${WELCOME URL} http://${SERVER}/welcome.html
    11. ${ERROR URL} http://${SERVER}/error.html
    12. *** Keywords ***
    13. Open Browser To Login Page
    14. Open Browser ${LOGIN URL} ${BROWSER}
    15. Maximize Browser Window
    16. Set Selenium Speed ${DELAY}
    17. Login Page Should Be Open
    18. Title Should Be Login Page
    19. Go To Login Page
    20. Go To ${LOGIN URL}
    21. Login Page Should Be Open
    22. Input Username
    23. [Arguments] ${username}
    24. Input Text username_field ${username}
    25. Input Password
    26. [Arguments] ${password}
    27. Input Text password_field ${password}
    28. Submit Credentials
    29. Click Button login_button
    30. Welcome Page Should Be Open
    31. Location Should Be ${WELCOME URL}
    32. Title Should Be Welcome Page
    复制代码
      Unittest
      Unittest是一个基于Python的自动化单元测试框架,属于Python标准库中的一员,支持测试套件的复用。 只需在测试脚本中导入Unittest库,测试人员就可以自定义测试类,创建测试用例,通过unittest.main()运行所有测试用例。

    【 Unittest —— Demo】
    1. import unittest
    2. def add(x, y):
    3. return x + y
    4. class Test(unittest.TestCase):
    5. def test_add_001(self):
    6. self.assertEquals(add(4, 5), 9)
    7. def test_add_002(self)
    8. self.assertNotEqual(add(1,2),10)
    9. if __name__ == '__main__':
    10. unittest.main()
    复制代码
    常用包/方法如下:


     Nose2
      Nose2继承自Nose,同样是一个基于Python的单元测试框架, 可以视为Unittest框架的拓展,因此,Nose2下可以运行Unittest编写的测试用例。 Nose2有丰富的插件,集编写测试用例,异常处理等多种功能。相较于上面提到的Unittest和Robot Framework而言,却没那么高的普及度,但仍不失为一款好用的开源测试框架。
    【 Nose2 —— Demo】
    1. from mynum import *
    2. import nose
    3. def add(x, y):
    4. return x + y
    5. def test_add_integers():
    6. assert add(5, 3) == 8
    7. def test_add_floats():
    8. assert add(1.5, 2.5) == 4
    9. def test_add_strings():
    10. nose.tools.assert_raises(AssertionError, add, 'hello', 'nose2')
    11. if __name__ == '__main__':
    12. nose.run()
    复制代码
    常用包/方法如下:



    Pytest
      Pytest是Python另一款非常热门的开源测试框架。其语法简单,且拥有丰富的插件,可应用于功能测试,API测试,数据库及UI测试等多种测试类型。
      【 Pytest —— Demo1 】
    1. import pytest
    2. def test_demo_method1():
    3. x = 1
    4. y = 2
    5. assert x+1 == y, "test pass"
    6. def test_demo_method2():
    7. x = 6
    8. y = 3
    9. assert x-1 == y+2, "test failed"
    复制代码
    常用包/方法如下:



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-9 06:05 , Processed in 0.074058 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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