资讯动态

字符串str详解

发布时间:2026/10/22 2:24:25 来源:尧图企业网站定制
背景说明字符串str是测试脚本最高频的数据类型。 接口请求URL、请求body文本、接口返回提示msg、错误日志、手机号、订单号全部都是字符串。 很多同学只会简单定义字符串对于截取、分割、去除空格、格式化输出很陌生。在做接口校验的时候经常遇到报文带多余空格、需要掩码手机号、解析日志文本、组装测试报告输出。 字符串的各类方法是断言、日志输出、文本解析的基础。⚠️重要特性字符串属于不可变对象所有切片、内置方法不会修改原字符串而是返回全新字符串。一、基础知识字符串使用英文单引号或者双引号包裹。url https://api.xxx.com/login username test0011. 基础常用操作url https://api.xxx.com/login username test001 # 字符串拼接 full_url url ?user username print(full_url) # 获取字符串长度 len() print(len(username)) # 7 # in 判断是否包含子串断言非常常用 print(login in url) # True # strip() 去除首尾空格、换行符接口返回经常携带看不见空白字符 raw_text test001\n print(raw_text.strip()) # test0012. 字符串切片【测试高频】语法字符串[起始:结束:步长]左闭右开规则包含起始下标不包含结束下标下标从0开始负数代表从尾部倒数。order_no ORD20261020001 print(order_no[0:3]) # ORD截取前3位 print(order_no[3:]) # 20261020001下标3到末尾 print(order_no[-4:]) # 0001截取末尾4位业务实战手机号掩码phone 13800138000 hide_phone phone[:3] **** phone[-4:] print(hide_phone) #138****80003. 高频内置方法msg success,ok # split按照分隔符切割返回列表解析csv、简单日志 text login,200,120ms parts text.split(,) print(parts) # [login, 200, 120ms] # join拼接字符串下面使用“换行符”(\n)把列表里的内容连起来 err_list [用户A异常,用户B异常] out_text \n.join(err_list) print(out_text) # 用户A异常 # 用户B异常 # startswith / endswith 判断开头结尾校验URL、文件后缀 url https://api.test.com/login print(url.startswith(https)) # True # f‑string格式化输出日志打印首选 order_id A003 status banned log f订单{order_id}状态异常{status} print(log)4. 原始字符串 rWindows文件路径反斜杠会识别为转义字符加r关闭转义为后续文件读写做铺垫。file_path rD:\work\data\report.txt5. 类型转换 字符串 ↔ 数字接口经常返回数字格式的字符串直接和数字对比会不相等。code_str 200 print(code_str 200) # False # 字符串转整数 code int(code_str) print(code 200) # True # 数字转字符串 num 500 s_num str(num)6. 空字符串 空字符串不等于None接口字段会出现空字符串业务判断务必区分。v1 v2 None print(v1 is None) # False print(v2 is None) # True二、真实工作场景场景1接口返回文本做简单断言response_text {code:0,msg: success } msg response_text.split(msg:)[1].split(})[0].strip() if msg success: print(用例执行通过) else: print(f用例失败返回msg{msg})场景2批量生成测试账号# 生成 user001 ~ user003 for i in range(1,4): account fuser{i:03d} print(account)具体拆解如下f字符串最前面的f代表“格式化”。有了它花括号{}里面就可以直接放变量并指定它的显示格式。i这是当前循环的数字在range(1,4)中分别是 1, 2, 3。:03d核心重点:表示接下来要对变量i进行格式设定。d表示把这个变量当成整数数字来处理。03表示总宽度必须是3位如果数字不够3位就在前面用0补齐。实际运行效果当i 1时格式化成 3 位数字就是001拼起来就是user001当i 2时格式化成 3 位数字就是002拼起来就是user002当i 3时格式化成 3 位数字就是003拼起来就是user003场景3收集异常列表拼接输出日志error_users [{name:test002,status:banned},{name:test003,status:closed}] log_content \n.join([f用户:{item[name]},异常状态:{item[status]} for item in error_users]) print(异常详情\n, log_content)三、避坑经验现象s[0] A修改字符串某一位抛出TypeError原因字符串不可变不能原地修改。 解法使用切片拼接生成新字符串。现象200 200结果False。 原因字符串数字和整数是两种不同类型。 解法int()转换后再对比。现象Windows文件路径读取报错。 原因\被识别为转义字符。 解法路径前面加r原始字符串。现象肉眼看两段字符串一模一样对比返回False。 原因存在看不见的空格换行。 解法比较前调用.strip()。现象混淆空字符串与None。 说明JSON空字符串和nullPython的None是两个完全不同业务值写断言要区分。下篇预告下一篇讲条件判断 if 和循环 for / while我们把「检查每个用户」真正写成带逻辑校验的脚本让用例自己会输出「通过」还是「失败」。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑