TA的每日心情 | 无聊 3 天前 |
---|
签到天数: 1050 天 连续签到: 1 天 [LV.10]测试总司令
|
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】
- *** Settings ***
- Library SeleniumLibrary
- *** Variables ***
- ${SERVER} localhost:7272
- ${BROWSER} Firefox
- ${DELAY} 0
- ${VALID USER} demo
- ${VALID PASSWORD} mode
- ${LOGIN URL} http://${SERVER}/
- ${WELCOME URL} http://${SERVER}/welcome.html
- ${ERROR URL} http://${SERVER}/error.html
- *** Keywords ***
- Open Browser To Login Page
- Open Browser ${LOGIN URL} ${BROWSER}
- Maximize Browser Window
- Set Selenium Speed ${DELAY}
- Login Page Should Be Open
- Title Should Be Login Page
- Go To Login Page
- Go To ${LOGIN URL}
- Login Page Should Be Open
- Input Username
- [Arguments] ${username}
- Input Text username_field ${username}
- Input Password
- [Arguments] ${password}
- Input Text password_field ${password}
- Submit Credentials
- Click Button login_button
- Welcome Page Should Be Open
- Location Should Be ${WELCOME URL}
- Title Should Be Welcome Page
复制代码 Unittest
Unittest是一个基于Python的自动化单元测试框架,属于Python标准库中的一员,支持测试套件的复用。 只需在测试脚本中导入Unittest库,测试人员就可以自定义测试类,创建测试用例,通过unittest.main()运行所有测试用例。
【 Unittest —— Demo】
- import unittest
- def add(x, y):
- return x + y
- class Test(unittest.TestCase):
- def test_add_001(self):
- self.assertEquals(add(4, 5), 9)
- def test_add_002(self)
- self.assertNotEqual(add(1,2),10)
- if __name__ == '__main__':
- unittest.main()
复制代码 常用包/方法如下:
Nose2
Nose2继承自Nose,同样是一个基于Python的单元测试框架, 可以视为Unittest框架的拓展,因此,Nose2下可以运行Unittest编写的测试用例。 Nose2有丰富的插件,集编写测试用例,异常处理等多种功能。相较于上面提到的Unittest和Robot Framework而言,却没那么高的普及度,但仍不失为一款好用的开源测试框架。
【 Nose2 —— Demo】
- from mynum import *
- import nose
- def add(x, y):
- return x + y
- def test_add_integers():
- assert add(5, 3) == 8
- def test_add_floats():
- assert add(1.5, 2.5) == 4
- def test_add_strings():
- nose.tools.assert_raises(AssertionError, add, 'hello', 'nose2')
- if __name__ == '__main__':
- nose.run()
复制代码 常用包/方法如下:
Pytest
Pytest是Python另一款非常热门的开源测试框架。其语法简单,且拥有丰富的插件,可应用于功能测试,API测试,数据库及UI测试等多种测试类型。
【 Pytest —— Demo1 】
- import pytest
- def test_demo_method1():
- x = 1
- y = 2
- assert x+1 == y, "test pass"
- def test_demo_method2():
- x = 6
- y = 3
- assert x-1 == y+2, "test failed"
复制代码 常用包/方法如下:
|
|