探索框架(一)--unittest框架(Python)

导语

        在熟悉了如何去分解需求编写web自动化、接口测试脚本以后,要开始探索框架,测试框架可以实现对所有的测试脚本、测试数据及测试报告的管理,提升测试执行和回归的效率,方便随时进行工作的开展及相关成果物的查看。本次先来学习已有的unittest框架,了解如何使用unittest框架。

一、初识unittest框架

        本次通过unittest框架实现登录接口的测试,来认识unittest基本用法,编写的代码如下:

import unittest
import requests, csv


# 定义测试类,继承unittest框架
class fram_test_v1(unittest.TestCase):
    # 使用框架提供的setup方法完成接口初始化
    def setUp(self):
        self.url = "http://localhost:8080/.../login.do"
        self.test_data = open("userinfo.csv", "r")

    # 定义unittest测试方法,必须已test_打头
    def test_login(self):
        # 发送接口请求
        table = csv.reader(self.test_data)
        userinfo = {}
        for ele in table:
            userinfo["username"] = ele[0]
            userinfo["password"] = ele[1]
            response = requests.post(self.url, data=userinfo).text
            print(response)
            # 断言函数
            self.assertIn(ele[2], str(response))

    # 通过框架提供的teardown方法来进行回收工作
    def tearDown(self):
        self.test_data.close()


if __name__ == '__main__':
    unittest.main()

        脚本中已有相关注释,就不多做描述了,运行以后,就可以看到打印出的响应结果,如果说在定义方法时,没有以test_打头,在运行后,就只能看到OK,并不能看到相应的响应结果。如果想了解程序具体运行的过程,可以使用debug的方式来看,如下图(图1):

图1 debug模式

 二、通过unittest框架实现多个接口的测试

1、unittest.main

        为了了解unittest框架式如何实现多个接口的测试,编写了简单的程序,不用涉及复杂的功能业务,代码如下:

import unittest


class fram_test_v1(unittest.TestCase):
    def setUp(self):
        print("setup")

    def test_case1(self):
        print("test_case1")

    def test_case3(self):
        print("test_case3")

    def test_case2(self):
        print("test_case2")

    def tearDown(self):
        print("teardown")


if __name__ == '__main__':
    unittest.main()

        运行程序,观察打印语句的顺序,如下图(图2):

图2 多接口运行结果

        执行顺序其实是根据asc码顺序执行,如果其中有setUp和tearDown方法,顺序则是setUp-->test_case1-->tearDown-->setUp-->test_case2-->tearDown......与方法编写的位置顺序无关,这就是用unittest.main的特点。

2、测试套TestSuite

        如果要根据自己想要的顺序来运行,或者是指定运行的方法,怎么操作呢?这里可以使用测试套TestSuite,修改main下的内容如下(图3):

图3 测试套

        此时如果仍然还是右键-->run...是不会执行suit相关代码的,需要修改运行方式,,操作步骤如下:

图4 修改运行方式1
图5 修改运行方式2
图6 修改运行方式3

         从运行结果可以看出,使用测试套,仅执行了定义的test_case2方法。

3、以文件方式执行

        以文件方式执行,一般直接写调用程序即可,本次就调用上面用测试套方式编写的脚本,如下图所示(图7):

图7 以文件方式执行

         通过运行结果可以看出,并没有像上个使用测试套编写的脚本一样,只执行了test_case2,而是将所有的方法均按asc码顺序执行了一遍。

三、总结

1、unittest框架的使用要求

(1)需要导包import unittest

(2)定义测试类需要继承unittest:class 类名(unittest.TestCase)

2、unittest框架的基本组成要素

(1)setUp初始化方法:可选,测试前期的初始化工作

(2)自定义的测试方法:test_X

(3)tearDown方法:可选,通常用来关闭对象等

3、三种运行方式的对比

(1)unittest.main

        依次执行当前文件中对应测试类的所有方法,执行顺序则是按照asc码的顺序来执行。

(2)测试套

        可以按照自定义的顺序和数量来运行,但是必须是以指定的Python文件方式来运行。

(3)测试文件

        可以运行任意指定路径的指定的Python文件下的所有测试方法,执行顺序也是按照asc码的顺序来执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值