变量、数据类型与字符串:测试中最常用的 80%
背景说明你进组之后大概率会遇到组里前辈甩给你一个 pytest 用例文件让你改改里面的登录账号和密码。你点开一看满屏的username test001、timeout 30、is_vip False啥的。别急这就是今天要讲的三样东西变量、数据类型、字符串。它们占了你以后写测试脚本 80% 的日常操作。一、基础知识变量存储数据的标签。使用方法直接定义变量名变量值不用声明类型。Python 会自动识别对应的数据类型数据类型决定这块数据该怎么存储、支持哪些运算。Python 3.12 里你直接在终端敲# 等号左边是变量名右边是值Python 自动判断类型 username test001 # 字符串 string存文本 timeout 30 # 整数 int存数字 is_vip False # 布尔 bool只有 True / False 两个值注意首字母大写 price 9.9 # 浮点数 float带小数点的数调试小技巧使用type()可以查看变量的数据类型排查类型问题很实用print(type(username)) # 输出 class str注意变量名只能是字母、数字、下划线、且不能以数字开头、区分大小写。建议用user_name这种小写加下划线方式定义变量名。字符串就是一段文字用单引号或双引号包起来都行。如果字符串内容本身包含双引号外层就用单引号内部包含单引号外层用双引号避免语法报错。resp {code:0,msg:success}几个最常用的字符串操作url [https://api.xxx.com/login](https://api.xxx.com/login) # 拼接方式1 拼接适合简单场景 full url ?user username # 拼接方式2f‑string格式化测试脚本优先推荐可读性更好 # 引号里面默认全部当成普通文字原样输出如果在引号的文本里插入变量必须用{变量名} full2 f{url}?user{username} # 取长度 print(len(username)) # 输出 7 # 判断是否包含某段文字断言报错时特别好用 print(login in url) # 输出 True # 去掉首尾空格接口返回常有看不见的换行 raw test001\n print(raw.strip()) # 输出 test001关键一步字符串比较用不是。是赋值才是判断相不相等。很多人断言写if status ok:直接报SyntaxError就是因为把赋值号当成了判断号。二、真实工作场景写接口自动化基本就是这几样在组合。比如测一个登录接口你要准备请求参数# 测试数据其实就是几个变量 phone 13800138000 code 123456 env test # test 环境 / prod 环境用变量区分什么叫用变量区分环境 实际工作会有多套环境dev开发环境、test测试环境、pre预发布环境、prod生产环境。 把环境标识抽成变量配合判断逻辑只修改这一处变量脚本就自动切换域名、测试账号不需要在代码里到处硬编码修改减少漏改带来的问题。# 仅修改这一行即可切换整套脚本运行环境 env test if env test: base_url [https://test-api.xxx.com](https://test-api.xxx.com) test_phone 13800138000 elif env pre: base_url [https://pre-api.xxx.com](https://pre-api.xxx.com) test_phone 13800138001 elif env prod: base_url [https://api.xxx.com](https://api.xxx.com) test_phone 13800138002 else: raise Exception(环境变量错误请填写 dev/test/pre) login_url base_url /login body {phone: test_phone, code: 123456} print(f当前运行环境{env}接口地址{login_url})⚠️小坑字符串区分大小写envTest和envtest判定结果不一样团队约定全部小写避免匹配失效。然后你从接口拿回返回值Python 给的是个字符串或者后面会学的字典。你需要用字符串方法校验它response_text {code:0,msg:success} # 接口返回的原文 # 判断这次登录到底成没成 if success in response_text: print(登录用例通过) else: print(登录用例失败返回:, response_text)三、避坑经验现象断言一直失败明明内容一样却不相等。原因一边带空格一边没带。解法比较前先.strip()把首尾空白清掉或者打印repr(text)看真实内容。现象变量名明明定义了运行时却NameError: name x is not defined。原因要么拼错字母要么定义在 if 里面、外面取不到。解法把变量定义在函数或脚本最外层统一用小写加下划线命名少踩拼错坑。现象中文打印出来是乱码\xe7\x94\xa8。原因文件编码不是 UTF‑8。解法用 VS Code 把文件存成 UTF‑8字符串涉及中文时优先用双引号跟团队约定保持一致。现象环境切换不生效。原因env变量大小写和判断条件不一致。解法全部统一小写书写。下篇预告下一篇我们讲列表list和字典dict那才是处理接口返回值时的核心武器。