正则表达式(Regular Expression)在接口自动化测试中非常有用,可以用来从响应数据中提取特定的信息、验证返回内容是否符合预期格式等。
示例代码
1. 提取HTML中的链接
场景: 从一段HTML文本中提取所有的URL链接。
import re
html = 'Example Visit Test Site'
pattern = re.compile(r'href="(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)"')
matches = pattern.findall(html)
print(matches)
# 输出结果: ['https://www.example.com', 'http://test.example.org']
'
运行
运行
2. 验证邮箱格式
场景: 验证一个字符串是否符合邮箱地址的基本格式。
email = "example@example.com"
pattern = re.compile(r'^[\w\.-]+@[\w\.-]+\.\w+$')
if pattern.match(email):
print("Valid email")
else:
print("Invalid email")
# 输出结果: Valid email
3. 提取JSON响应中的特定字段
场景: 从JSON格式的文本中提取某个键的值。
json_text = '{"name": "John Doe", "age": 30, "city": "New York"}'
pattern = re.compile(r'"age": (\d+)')
match = pattern.search(json_text)
if match:
age = match.group(1)
print(f"Age: {age}")
else:
print("Age not found")
# 输出结果: Age: 30
4. 匹配电话号码
场景: 验证并提取字符串中的电话号码。
text = "Contact us at +1 (123) 456-7890 or +44-20-7123-4567."
pattern = re.compile(r'\+?\d{1,3}[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}')
phone_numbers = pattern.findall(text)
print(phone_numbers)
# 输出结果: ['+1 (123) 456-7890', '+44-20-7123-4567']
5. 检查字符串中是否包含敏感词
场景: 确认API返回的消息中不包含任何敏感词汇。
message = "Your order has been processed successfully."
sensitive_words = ["error", "failed"]
pattern = re.compile("|".join(map(re.escape, sensitive_words)))
if pattern.search(message):
print("Message contains sensitive words.")
else:
print("Message is clean.")
# 输出结果: Message is clean.
6. 提取HTTP状态码
场景: 从日志中提取HTTP请求的状态码。
log_entry = "GET /api/data HTTP/1.1 200 OK"
pattern = re.compile(r'\b\d{3}\b')
status_code = pattern.search(log_entry)
if status_code:
print(f"Status Code: {status_code.group()}")
else:
print("No status code found.")
# 输出结果: Status Code: 200
7. 验证日期格式
场景: 确保日期字符串遵循YYYY-MM-DD格式。
date_str = "2023-04-01"
pattern = re.compile(r'^\d{4}-\d{2}-\d{2}$')
if pattern.match(date_str):
print("Valid date format")
else:
print("Invalid date format")
# 输出结果: Valid date format
8. 提取URL参数
场景: 从URL中提取查询参数的值。
url = "https://www.example.com/search?q=python+regex&lang=en"
pattern = re.compile(r'q=(.*?)(&|$)')
match = pattern.search(url)
if match:
query = match.group(1)
print(f"Search Query: {query}")
else:
print("Query parameter not found")
# 输出结果: Search Query: python+regex
9. 校验密码强度(至少包含一个大写字母、一个小写字母、一个数字和特殊字符)
场景: 验证用户输入的密码是否符合复杂度要求。
password = "P@ssw0rd"
pattern = re.compile(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$')
if pattern.match(password):
print("Strong password")
else:
print("Weak password")
# 输出结果: Strong password
10. 提取XML标签内容
场景: 从XML数据中提取特定标签的内容。
xml_data = 'Some description here.'
pattern = re.compile(r'')
title = pattern.search(xml_data).group(1)
print(title)
# 输出结果: Sample Title
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!