Django入门(二)——web接口与自动化测试by虫师

一、单元测试——使用unittest框架

单元测试:不仅用于程序测试,同样可适用于UI自动化测试(Selenium)、接口自动化测试(requests)、移动APP测试(Appium)。

1、写一个简单计算器caculator.py:

class calculator:
    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

    def sub(self):
        return self.a - self.b

    def mul(self):
        return self.a * self.b

    def div(self):
        return self.a / self.b

2、测试用例:
其中,
setUp:用例的前置条件,相当于初始化
tearDown:用例执行完之后的动作
unittest每个方法前面要加test_

在主程序中,新建一个测试套件suite,使用addTest方法新增测试用例。最后,创建runner对象,运行测试套件。

import unittest
from calculator import calculator


class ModuleTest(unittest.TestCase):
    def setUp(self):
        self.cal = calculator(8,4)

    def tearDown(self):
        pass

    def test_add(self):
        result = self.cal.add()
        self.assertEqual(result, 12)

    def test_sub(self):
        result = self.cal.sub()
        self.assertEqual(result, 4)

    def test_mul(self):
        result = self.cal.mul()
        self.assertEqual(result, 32)

    def test_div(self):
        result = self.cal.div()
        self.assertEqual(result, 3)





if __name__=="__main__":
    suite = unittest.TestSuite()
    suite.addTest(ModuleTest("test_add"))
    suite.addTest(ModuleTest("test_sub"))
    suite.addTest(ModuleTest("test_mul"))
    suite.addTest(ModuleTest("test_div"))

    runner = unittest.TextTestRunner()
    runner.run(suite)

二、Django自带测试

Django自带的单元测试类django.test.TestCase继承自unittest.TestCase。
每个应用下面都有一个tests.py测试文件。

下面是测试上一节编写的,签到系统功能。
使用302是因为登录后会跳转even_mange/

class LoginActionTest(TestCase):
    def setUp(self):
        user = User.objects.get(username="admin")
        self.assertEqual(user.username, 'admin')
        self.assertEqual(user.email, 'admin@mail.com')
    def test_login_action_username_password_null(self):
        '''用户名密码为空'''
        test_data = {'username': '', 'password': ''}
        response = self.client.post('/login_action/', data=test_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(b"username or password error!", response.content)

    def test_login_action_username_password_error(self):
        '''用户名密码错误'''
        test_data = {'username': 'asdasda', 'password': 'asdasdadaads'}

        response = self.client.post('/login_action/', data=test_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(b"username or password error!", response.content)

    def test_login_action_success(self):
        test_data = {'username': 'admin', 'password': 'admin'}
        response = self.client.post('/login_action/', data = test_data)
        self.assertEqual(response.status_code, 302)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值