WHCSRL 技术网

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

Python得天独厚的优势造就了一系列测试框架,在这些测试框架面前,孰优孰劣?具体该如何选择?

俗话说 “没有最好的,只有最合适的”,今天我们就Python当前使用较为频繁的4大主流自动化测试框架, 来一回比拼,从中挑选最为合适你当前项目需求的那一款。

10G软件测试资料教程,100+测试岗笔试题免费领取!添加V:atstudy-js  备注:CSDN

图标

·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"

常用包/方法如下:

……

因作者版权要求,想要阅读完整文章,可以私信“文章”,小编即可发送给你!

推荐阅读