下面给你第1周每天对应的示例代码,直接复制就能跑,边看边改就能学会。
Day1:requests 发送 GET / POST 请求
import requests# 1. GET 请求deftest_get(): url = "https://httpbin.org/get" res = requests.get(url, params={"name": "test", "age": 20}) print("状态码:", res.status_code) print("返回数据:", res.json())# 2. POST 请求(表单/JSON)deftest_post(): url = "https://httpbin.org/post" data = {"username": "admin", "password": "123456"} res = requests.post(url, json=data) print(res.json())if __name__ == "__main__": test_get() test_post()
Day2:封装请求 + 基础断言
import requestsclassApiClient:def__init__(self, base_url="https://httpbin.org"): self.base_url = base_urldefget(self, path, params=None): url = self.base_url + path res = requests.get(url, params=params, timeout=5)return resdefpost(self, path, json=None): url = self.base_url + path res = requests.post(url, json=json, timeout=5)return res# 测试+断言if __name__ == "__main__": api = ApiClient() res = api.get("/get")# 断言assert res.status_code == 200, "请求失败"assert"origin"in res.json(), "返回结构异常" print("用例通过")
Day3:pytest 基础用例
新建文件 test_demo.py
import requestsdeftest_get_200(): res = requests.get("https://httpbin.org/get")assert res.status_code == 200deftest_post_json(): res = requests.post("https://httpbin.org/post", json={"a":1})assert res.json()["json"]["a"] == 1
运行:
pytest test_demo.py -v
Day4:从 Excel 读取测试用例
import pandas as pd# Excel 结构:url, method, params, expect_codedefread_test_cases(file="cases.xlsx"): df = pd.read_excel(file)return df.to_dict("records")if __name__ == "__main__": cases = read_test_cases()for case in cases: print(case["url"], case["method"], case["expect_code"])
Day5:pytest + 测试报告
pip install pytest-html
运行并生成报告:
pytest test_demo.py --html=report.html
Day6:简易接口自动化框架结构
project/ config.py # 域名、超时 api_client.py # 请求封装 test_cases/ # pytest 用例 cases.xlsx # 用例表 run.py # 一键执行
run.py
import pytestpytest.main(["test_cases/", "-v", "--html=report.html"])
Day7:异常处理 + 日志
import requestsimport logginglogging.basicConfig(level=logging.INFO)defsafe_get(url):try: res = requests.get(url, timeout=3) logging.info(f"{url}{res.status_code}")return resexcept Exception as e: logging.error(f"请求失败: {e}")returnNonesafe_get("https://httpbin.org/get")
你明天直接跟着 Day1~Day7 敲一遍,基本接口自动化就入门了。