错误的原因是在发送请求时,body
中的 json
参数包含了一个 PosixPath
对象,这是由于 Config.PHONES_FILE和
Config.USERNAMES_FILE 返回的是一个 Path
对象,而在发送请求时 requests.post
无法将 Path
对象直接序列化为 JSON。
test.py
import pytest
import allure
from config.Config import Config
from API.register_app_user_api import user_register
@allure.feature("接口测试")
class TestAPI:
@allure.story("测试用例1")
def test_case_1(self):
with allure.step("步骤1:发送接口请求"):
# 报错代码
# phone = Config.PHONES_FILE
# user_name = Config.USERNAMES_FILE
# 优化后的正确代码
phone = str(Config.RANDOM_PHONE_NUMBER)
user_name = Config.get_random_username()
# 其他代码...
with allure.step("步骤2:检查响应结果"):
# 其他代码...
random.py
import random
import string
class RandomDataGenerator:
def __init__(self):
pass
@staticmethod
def generate_random_phone_number():
"""生成随机的11位手机号,前三位为移动手机号码开头"""
mobile_prefix = random.choice(["134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "182", "187", "188"])
remaining_digits = ''.join(random.choices(string.digits, k=8))
phone_number = mobile_prefix + remaining_digits
return phone_number
@staticmethod
def generate_random_username():
"""生成随机的6位字母+数字的用户名"""
username = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
return username
Config.py
为了解决这个问题,在config.py
文件中的Config
类中,将Config.USERNAMES_FILE
的生成方式修改为运行时动态生成,而不是事先定义为类属性。以下是修改后的config.py
文件
from common.random import RandomDataGenerator
from pathlib import Path
# 调用随机生成用户信息类
data_generator = RandomDataGenerator()
class Config:
# 正确代码
"""用户信息"""
# 生成随机手机号
RANDOM_PHONE_NUMBER = data_generator.generate_random_phone_number()
# Updated: 移除 USERNAMES_FILE,改为在运行时生成随机用户名
@classmethod
def get_random_username(cls):
return data_generator.generate_random_username()
# 报错代码写法
# """用户信息"""
#
# # 生成随机手机号
# RANDOM_PHONE_NUMBER = data_generator.generate_random_phone_number()
# # 生成随机用户名
# RANDOM_USERNAME = data_generator.generate_random_username()
if __name__ == '__main__':
a = Config.RANDOM_PHONE_NUMBER
print(a)