【测试开发面试题】每日 3 题(五)

✍个人博客:Pandaconda-优快云博客
📣专栏地址:https://blog.youkuaiyun.com/newin2020/category_12903869.html
📚专栏简介:在这个专栏中,我将会分享测试开发面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

1. 请阐述如何使用 Python 的 unittest 框架进行单元测试,包括测试类的创建、测试方法的编写、测试的执行和结果查看

unittest 是 Python 内置的单元测试框架,以下是使用它进行单元测试的详细步骤:

  1. 测试类的创建

需要创建一个继承自 unittest.TestCase 的类,在这个类中编写具体的测试方法。

  1. 测试方法的编写

测试方法必须以 test_ 开头,这样 unittest 框架才能识别并执行这些方法。

  1. 测试的执行

可以使用 unittest.main() 来自动发现并执行测试类中的所有测试方法。

  1. 结果查看

执行测试后,会输出测试的执行结果,显示通过的测试用例数量、失败的测试用例数量等信息。

以下是一个示例代码:

import unittest

# 假设这是一个待测试的函数
def add(a, b):
    return a + b

class TestAddFunction(unittest.TestCase):
    # 测试方法,必须以 test_ 开头
    def test_add(self):
        result = add(2, 3)
        # 使用断言来验证结果
        self.assertEqual(result, 5)

if __name__ == '__main__':
    # 执行测试
    unittest.main()

在上述代码中,定义了一个简单的 add 函数,然后创建了一个继承自 unittest.TestCase 的 TestAddFunction 类,在该类中编写了 test_add 测试方法,使用 self.assertEqual 断言来验证 add 函数的结果是否符合预期。最后使用 unittest.main() 执行测试。

2. 在测试一个 RESTful API 时,如何使用 Python 的 requests 库进行不同类型的请求(如 GET、POST、PUT、DELETE),并处理响应结果?

requests 是 Python 中常用的 HTTP 请求库,以下是使用它进行不同类型请求并处理响应结果的示例:

  1. GET 请求
import requests

# 发送 GET 请求
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')

# 检查响应状态码
if response.status_code == 200:
    # 获取响应的 JSON 数据
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")
  1. POST 请求
import requests

# 定义请求数据
data = {
    'title': 'foo',
    'body': 'bar',
    'userId': 1
}

# 发送 POST 请求
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)

# 检查响应状态码
if response.status_code == 201:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")
  1. PUT 请求
import requests

# 定义请求数据
data = {
    'title': 'updated title',
    'body': 'updated body',
    'userId': 1
}

# 发送 PUT 请求
response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=data)

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")
  1. DELETE 请求
import requests

# 发送 DELETE 请求
response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')

# 检查响应状态码
if response.status_code == 200:
    print("删除成功")
else:
    print(f"请求失败,状态码: {response.status_code}")

3. 如何对一个数据库中的表进行数据完整性测试,例如确保某个字段的值符合特定的规则(如日期格式、数值范围等),请结合 SQL 和 Python 进行说明

以下以 MySQL 数据库为例,说明如何结合 SQL 和 Python 对数据库表中的字段进行数据完整性测试。

假设我们有一个 orders 表,其中有一个 order_date 字段,要求其格式为 YYYY-MM-DD,还有一个 total_amount 字段,要求其值在 0 到 10000 之间。

  1. 使用 SQL 进行初步检查

可以使用 SQL 的 WHERE 子句筛选出不符合规则的数据。

-- 检查 order_date 字段的日期格式是否正确
SELECT * FROM orders
WHERE order_date NOT REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$';

-- 检查 total_amount 字段的值是否在 0 到 10000 之间
SELECT * FROM orders
WHERE total_amount < 0 OR total_amount > 10000;
  1. 使用 Python 执行 SQL 并处理结果
import mysql.connector

# 连接到数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)

mycursor = mydb.cursor()

# 检查 order_date 字段的日期格式
mycursor.execute("SELECT * FROM orders WHERE order_date NOT REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'")
invalid_date_rows = mycursor.fetchall()
if invalid_date_rows:
    print("发现日期格式不正确的数据:")
    for row in invalid_date_rows:
        print(row)
else:
    print("order_date 字段的日期格式全部正确。")

# 检查 total_amount 字段的值范围
mycursor.execute("SELECT * FROM orders WHERE total_amount < 0 OR total_amount > 10000")
invalid_amount_rows = mycursor.fetchall()
if invalid_amount_rows:
    print("发现总金额不在 0 到 10000 之间的数据:")
    for row in invalid_amount_rows:
        print(row)
else:
    print("total_amount 字段的值全部在 0 到 10000 之间。")

# 关闭数据库连接
mydb.close()

在上述代码中,首先使用 SQL 语句筛选出不符合规则的数据,然后使用 Python 的 mysql.connector 库执行这些 SQL 语句,并根据查询结果输出相应的信息,从而完成数据完整性测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值