如何使用Python进行自动化测试

📝 面试求职: 「面试试题小程序」内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


写测试代码其实一点都不难!说来可笑,我刚开始写代码的时候总觉得测试代码特别麻烦,能运行就完事了。直到有一天,我改了一个小功能,结果不知道改出了什么问题,整个系统都崩溃了。从那以后,我就明白了自动化测试的重要性。

自动化测试入门

自动化测试本质上就是用代码检查另一段代码是否正常工作。打个比方,就像你买了个新手机,肯定要试试各种功能对不对?看看电话能不能打通,微信能不能正常聊天,照相机清不清晰。自动化测试也是这个道理,只不过是用代码来做这些检查。

我记得有次做一个计算器程序,要是按照老方法,得一个功能一个功能手动试,加法、减法、乘法、除法,还得试试负数、小数…光想想就头大。用了自动化测试后,写好测试代码,一键运行就能知道所有功能是否正常,省时省力还不容易出错。

def add(a, b):
   return a + b

# 测试代码
def test_add():
   assert add(1, 1) == 2
   assert add(-1, 1) == 0
   assert add(0.1, 0.2) == 0.3

温馨提示: assert 是Python中用来断言的关键字,可以理解为"断定某事一定是对的"。如果断言的结果是False,Python会立即抛出异常,告诉我们哪里出问题了。

pytest框架快速上手

说实话,光用assert来测试还是太原始了。记得我刚开始写测试的时候,就感觉缺了点什么。后来发现了pytest这个框架,简直就是给测试工作开了外挂!它不仅能自动找到并执行测试代码,还能生成清晰的测试报告,告诉你具体哪些测试通过了,哪些失败了,失败的原因是什么。

import pytest

def test_string_match():
   # 检查字符串是否包含特定内容
   text = "hello world"
   assert "hello" in text

@pytest.mark.parametrize("test_input,expected", [
   ("3+5", 8),
   ("2+4", 6),
   ("6+5", 11),
])
def test_eval(test_input, expected):
   # 参数化测试,一次测试多组数据
   assert eval(test_input) == expected

pytest的参数化测试真是太好用了!不用复制粘贴同样的代码,就能测试多组数据。还有个神奇的地方,它能自动发现文件中所有以test开头的函数,统一执行测试。

模拟真实场景

在实际工作中,经常会遇到需要连接数据库或者调用外部接口的情况。总不能为了测试去真实操作数据库吧?万一测试数据把生产环境搞崩了那就惨了。这时候就需要用到mock技术了,它就像是个替身演员,能模仿真实对象的行为。

from unittest.mock import Mock, patch

def get_user_data(user_id):
   # 假设这是个查询数据库的函数
   pass

def test_get_user():
   # 模拟数据库返回结果
   mock_db = Mock()
   mock_db.query.return_value = {"name": "小明", "age": 18}

   with patch('__main__.get_user_data', mock_db):
       result = get_user_data(1)
       assert result["name"] == "小明"

温馨提示: 使用mock不仅能避免测试对实际环境的影响,还能模拟各种异常情况,比如网络超时、数据库连接失败等,这在真实环境中可能很难触发。

测试用例组织

随着项目越来越大,测试代码也会越来越多。要是不好好组织,过段时间自己都看不懂写的是啥了。我现在习惯用类来组织相关的测试用例,每个类就像一个小专题,专门测试某个模块的功能。

class TestUserModule:
   def setup_method(self):
       # 每个测试方法前都会执行
       self.test_data = {"id": 1, "name": "小明"}

   def test_create_user(self):
       # 测试创建用户
       pass

   def test_delete_user(self):
       # 测试删除用户
       pass

setup_method这个方法特别实用,它会在每个测试方法执行前自动运行,可以用来准备测试数据。这样就不用在每个测试方法里都写一遍准备数据的代码了。

Selenium自动化测试

说到Web应用测试,不得不提Selenium。它就像是个机器人,能帮你自动操作网页,点击按钮、填写表单、获取页面内容,啥都能干。

fr

om selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.example.com")

# 查找输入框并输入内容
search_box = driver.find_element_by_id("search")
search_box.send_keys("测试内容")

# 点击搜索按钮
search_button = driver.find_element_by_id("submit")
search_button.click()

# 检查结果
results = driver.find_elements_by_class_name("result")
assert len(results) > 0

用Selenium写的测试就像是请了个不知疲倦的助手,24小时都能帮你测试网页功能。特别是在做回归测试的时候,几百个页面的功能,手工测试哪里比得上自动化效率高。

现在回想起来,以前总觉得写测试代码是在浪费时间,现在才发现这完全是一种误解。好的测试用例就像是项目的守护神,能在代码变更时及时发现问题,避免bug溜进生产环境。而且自动化测试还能作为代码的文档,新来的同事看看测试用例,就知道每个功能该怎么用了。


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值