python 接口自动化测试中的10个魔法方法

2023 篇文章 51 订阅
1243 篇文章 21 订阅

在Python中,魔法方法(也称为特殊方法)是一些特殊命名的方法,它们允许你定制类的行为。虽然这些方法不直接应用于接口自动化测试,但它们可以用来增强测试框架的功能。

 __init__ 方法

实际使用场景: 初始化测试环境。

import unittest
import requests
class TestAPI(unittest.TestCase):
    def __init__(self, methodName='runTest'):
        super().__init__(methodName)
        self.base_url = 'http://api.example.com'
    def test_get_users(self):
        response = requests.get(self.base_url + '/users')
        self.assertEqual(response.status_code, 200)

setUp 方法

实际使用场景: 设置每个测试方法前的准备工作。

import unittest
import requests
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_get_users(self):
        response = requests.get(self.base_url + '/users', headers=self.headers)
        self.assertEqual(response.status_code, 200)

tearDown 方法

实际使用场景: 清理每个测试方法后的资源。

import unittest
import requests
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def tearDown(self):
        # 清理资源
        pass
    def test_get_users(self):
        response = requests.get(self.base_url + '/users', headers=self.headers)
        self.assertEqual(response.status_code, 200)

__str__ 方法

实际使用场景: 改变测试类的字符串表示形式,便于调试。

import unittest
import requests
class TestAPI(unittest.TestCase):
    def __str__(self):
        return "API Test Suite"
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_get_users(self):
        response = requests.get(self.base_url + '/users', headers=self.headers)
        self.assertEqual(response.status_code, 200)

__repr__ 方法

实际使用场景: 改变测试类的表示形式,便于调试。

import unittest
import requests
class TestAPI(unittest.TestCase):
    def __repr__(self):
        return ""
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_get_users(self):
        response = requests.get(self.base_url + '/users', headers=self.headers)
        self.assertEqual(response.status_code, 200)

__eq__ 方法

实际使用场景: 自定义对象的相等性比较,可用于测试对象的等价性。

import unittest
import requests
class Response:
    def __init__(self, status_code):
        self.status_code = status_code
    def __eq__(self, other):
        return self.status_code == other.status_code
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_get_users(self):
        response = Response(200)
        self.assertEqual(response, Response(200))

__lt__ 方法

实际使用场景: 自定义对象的小于比较,可用于排序或测试对象间的大小关系。

import unittest
import requests
class Response:
    def __init__(self, status_code):
        self.status_code = status_code
    def __lt__(self, other):
        return self.status_code < other.status_code
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_compare_responses(self):
        response1 = Response(200)
        response2 = Response(404)
        self.assertTrue(response1 < response2)

__len__ 方法

实际使用场景: 自定义对象的长度,可用于测试数据结构的大小。

import unittest
import requests
class ResponseList:
    def __init__(self, responses):
        self.responses = responses
    def __len__(self):
        return len(self.responses)
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_response_list_length(self):
        response_list = ResponseList([Response(200), Response(404)])
        self.assertEqual(len(response_list), 2)

__iter__ 方法

实际使用场景: 自定义迭代行为,可用于循环遍历对象集合。

import unittest
import requests
class ResponseList:
    def __init__(self, responses):
        self.responses = responses
    def __iter__(self):
        return iter(self.responses)
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_response_list_iteration(self):
        response_list = ResponseList([Response(200), Response(404)])
        for response in response_list:
            self.assertGreaterEqual(response.status_code, 200)

__getitem__ 方法

实际使用场景: 自定义索引访问行为,可用于通过索引访问对象集合。

import unittest
import requests
class ResponseList:
    def __init__(self, responses):
        self.responses = responses
    def __getitem__(self, index):
        return self.responses[index]
class TestAPI(unittest.TestCase):
    def setUp(self):
        self.base_url = 'http://api.example.com'
        self.headers = {'Content-Type': 'application/json'}
    def test_response_list_index_access(self):
        response_list = ResponseList([Response(200), Response(404)])
        self.assertEqual(response_list[0].status_code, 200)

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

 ​​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值