当前位置: 首页 > news >正文

江门网站优化方案做网站怎么优化

江门网站优化方案,做网站怎么优化,吉野家网站谁做的,网站响应式首页模板接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架…

接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架中,以提升测试效率和数据管理能力。

Redis 基本操作

(1)Redis的安装和配置
在开始之前,首先需要安装Redis并进行相应的配置,

redis官网:Redis
redis中文网:Redis中文网
安装完成后,确保Redis服务已成功启动,并正确配置了连接信息(如主机地址、端口号、密码等),这块信息就不过多介绍了哟!

(2)Redis与接口自动化测试框架的集成
使用Python操作Redis需要导入相应的客户端库,例如:

pip install redis
import redis

 (3)初始化Redis连接
在接口自动化测试框架的初始化过程中,可以添加连接Redis的代码,确保测试过程中能够与Redis建立连接。

class TestFramework:def __init__(self):self.redis = redis.Redis(host='localhost', port=6379, password='your_password')

操作 Redis 常用命令

(4)字符串操作

# 设置键为"key1"的字符串值为"Hello, Redis!"
r.set('key1', 'Hello, Redis!')# 获取键为"key1"的字符串值
value = r.get('key1')
print(value)  # 输出: b'Hello, Redis!'

(5)列表操作

# 向名为"list1"的列表左侧插入元素
r.lpush('list1', 'item1')
r.lpush('list1', 'item2')
r.lpush('list1', 'item3')# 获取名为"list1"的列表所有元素
items = r.lrange('list1', 0, -1)
print(items)  # 输出: [b'item3', b'item2', b'item1']

(6)哈希表操作

# 设置名为"hash1"的哈希表字段和值
r.hset('hash1', 'field1', 'value1')
r.hset('hash1', 'field2', 'value2')# 获取名为"hash1"的哈希表字段和值
value1 = r.hget('hash1', 'field1')
value2 = r.hget('hash1', 'field2')
print(value1, value2)  # 输出: b'value1' b'value2'

(7)集合操作

# 向名为"set1"的集合添加元素
r.sadd('set1', 'item1')
r.sadd('set1', 'item2')
r.sadd('set1', 'item3')# 获取名为"set1"的集合所有元素
items = r.smembers('set1')
print(items)  # 输出: {b'item1', b'item2', b'item3'}

以上就是 redis 的常见操作,是不是比写 `sql` 语句简单,是不是 `so easy!!`

Redis 在接口自动化中的应用

封装Redis操作方法

为了方便接口自动化测试框架使用,又要开始封装了,简单封装代码如下:

class RedisClient:def __init__(self):self.redis = redis.Redis(host='localhost', port=6379, password='your_password')def set_data(self, key, value, expire_time=None):self.redis.set(key, value)if expire_time is not None:self.redis.expire(key, expire_time)def get_data(self, key):return self.redis.get(key)def delete_data(self, key):self.redis.delete(key)def hash_set_field(self, key, field, value):self.redis.hset(key, field, value)def hash_get_field(self, key, field):return self.redis.hget(key, field)def hash_delete_field(self, key, field):self.redis.hdel(key, field)

 接口自动化中比较常用的是字符串了,为了满足更多场景的需求,我们价格哈希数据结构的封装操作方法。

接口自动化测试中的常见应用场景

(1)测试数据管理
接口自动化测试中,将测试数据存储在Redis中,如用户信息、配置参数等。通过使用封装的Redis操作方法,可以方便地进行数据的增、删、改、查。

redis_client= RedisClient()
redis_client.set_data('user:1', '{"name": "kira", "age": 18}')
user = redis_client.get_data('user:1')
print(user.decode())  # 输出:{"name": "kira", "age": 18}

(2)处理接口依赖数据

一般步骤如下:

  • 先明确接口的依赖关系: 谁调用谁之前要先调用谁或者谁
  • 设置数据到redis:也就是接口B执行成功后,将关键数据存redis,可以使用我们封装的set,健一般是一个标识符,值就是接口的返回值
  • 从redis获取数据:比如接口A执行前,先获取B数据存Redis,然后调用redis获取数据给A或者B、C 等等。

上代码:

redis_client = RedisClient()
# 第一个接口,设置依赖数据
def first_api():response = requests.get('https://api.example.com/first')data = response.json()redis_client.set_data('key', data['value'])
def second_api():# 获取依赖数据dependency_data = redis_client.get_data('key')response = requests.post('https://api.example.com/second', data={'data': dependency_data})result = response.json()# 处理接口响应结果
if __name__ == '__main__':first_api()second_api()

 

(3)缓存管理

遇到需要频繁访问的接口,怎么半?
为了减少接口调用的开销和提高测试效率,可以使用Redis作为缓存工具,将接口的响应结果缓存起来,以便后续的测试用例重复使用。

redis_client= RedisClient()
def get_user_info(user_id):cache_key = f'user:{user_id}'user_info = redis_client.get_data(cache_key)if not user_info:# 调用接口获取用户信息user_info = api.get_user_info(user_id)redis_client.set_data(cache_key, user_info, expire_time=3600)return user_info

咱们首先检查Redis缓存中是否已存在对应的用户信息,如果不存在,则调用接口获取用户信息并将其存储到Redis缓存中,以备后续使用。同时,通过设置expire_time参数,可以为缓存数据设置过期时间,避免过期数据的使用。

(4)并发测试

在自动化测试中,针对并发场景的测试很重要,我们可以并发模拟一些实际场景,比如:利用redis的原子性和分布式锁,为每个用户创建一个唯一的标识,存到redis中,这样不同用户请求就可以通过检查和比对redis的结果来模拟并发访问了,例如:

# 创建 Redis 客户端
redis_client = RedisClient()def get_user_info(user_id):cache_key = f'user:{user_id}'user_info = redis_client.get_data(cache_key)if not user_info:# 调用接口获取用户信息response = requests.get(f'http://127.0.0.1:5000/?user_id={user_id}')if response.status_code == 200:user_info = response.textprint(user_info)redis_client.set_data(cache_key, user_info, expire_time=3600)else:print(f"Failed to retrieve user info for user_id: {user_id}. Status code: {response.status_code}")return user_info# 并发测试函数
def run_concurrent_test(user_ids):with concurrent.futures.ThreadPoolExecutor() as executor:# 提交任务到线程池future_to_user_id = {executor.submit(get_user_info, user_id): user_id for user_id in user_ids}# 处理返回结果for future in concurrent.futures.as_completed(future_to_user_id):user_id = future_to_user_id[future]try:user_info = future.result()print(f"user_id: {user_id}; user_info: {user_info}")except Exception as e:print(f"Error occurred for user_id: {user_id}, Error: {str(e)}")if __name__ == '__main__':u_ids = [i for i in range(10, 99)]run_concurrent_test(u_ids)

 我们创建线程池,使用submit 将任务(get_user_info)提交到线程池,每个任务一个 user_id,这里简单打印每个用户id,对于的信息,通过并发执行多任务,可以同一时间内获取多个用户信息,提高测试效率。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

 


文章转载自:
http://wanjiaminimally.xkzr.cn
http://wanjiaorthopteran.xkzr.cn
http://wanjiadustband.xkzr.cn
http://wanjiaartie.xkzr.cn
http://wanjiafaa.xkzr.cn
http://wanjiasmite.xkzr.cn
http://wanjiaglomeration.xkzr.cn
http://wanjiaseldom.xkzr.cn
http://wanjiacardholder.xkzr.cn
http://wanjiamicroprogrammable.xkzr.cn
http://wanjiamonotropy.xkzr.cn
http://wanjiaexaminationism.xkzr.cn
http://wanjiadns.xkzr.cn
http://wanjiacoquetry.xkzr.cn
http://wanjialogginess.xkzr.cn
http://wanjiacloisterer.xkzr.cn
http://wanjiascroop.xkzr.cn
http://wanjiadiphenylchlorarsine.xkzr.cn
http://wanjiamagnetostatic.xkzr.cn
http://wanjiascriptorium.xkzr.cn
http://wanjiabobstay.xkzr.cn
http://wanjiacatamenia.xkzr.cn
http://wanjiarhinolaryngitis.xkzr.cn
http://wanjiahexadecimal.xkzr.cn
http://wanjiaforbearance.xkzr.cn
http://wanjiatightfisted.xkzr.cn
http://wanjiamidcult.xkzr.cn
http://wanjiaallowance.xkzr.cn
http://wanjiahomoousian.xkzr.cn
http://wanjiaeccentrically.xkzr.cn
http://wanjiacarloadings.xkzr.cn
http://wanjiaiffish.xkzr.cn
http://wanjiaostende.xkzr.cn
http://wanjiazonal.xkzr.cn
http://wanjiaherpangina.xkzr.cn
http://wanjiathallophyte.xkzr.cn
http://wanjiagenappe.xkzr.cn
http://wanjiafritter.xkzr.cn
http://wanjiacollier.xkzr.cn
http://wanjiahila.xkzr.cn
http://wanjiajanissary.xkzr.cn
http://wanjiaelectropolish.xkzr.cn
http://wanjialisterism.xkzr.cn
http://wanjiacheckerwork.xkzr.cn
http://wanjiatokamak.xkzr.cn
http://wanjiaafricanization.xkzr.cn
http://wanjiainverter.xkzr.cn
http://wanjiatrysail.xkzr.cn
http://wanjiaconstitutional.xkzr.cn
http://wanjiaequipollent.xkzr.cn
http://wanjianitrosylsulfuric.xkzr.cn
http://wanjiaranchman.xkzr.cn
http://wanjiafeist.xkzr.cn
http://wanjiagangliate.xkzr.cn
http://wanjiaquotidian.xkzr.cn
http://wanjiabactrian.xkzr.cn
http://wanjiaarrondissement.xkzr.cn
http://wanjiatylosin.xkzr.cn
http://wanjiachug.xkzr.cn
http://wanjiahaematin.xkzr.cn
http://wanjiavidar.xkzr.cn
http://wanjiameetinghouse.xkzr.cn
http://wanjiaforeplane.xkzr.cn
http://wanjiaunhandsomely.xkzr.cn
http://wanjianazism.xkzr.cn
http://wanjiarumly.xkzr.cn
http://wanjiabermudan.xkzr.cn
http://wanjiaathrob.xkzr.cn
http://wanjiafoolery.xkzr.cn
http://wanjiaxerophily.xkzr.cn
http://wanjiabidirectional.xkzr.cn
http://wanjiazincographic.xkzr.cn
http://wanjiaugrian.xkzr.cn
http://wanjiaadjuster.xkzr.cn
http://wanjiajaialai.xkzr.cn
http://wanjialemonlike.xkzr.cn
http://wanjiastuccowork.xkzr.cn
http://wanjiapohai.xkzr.cn
http://wanjiahorsefaced.xkzr.cn
http://wanjiaparade.xkzr.cn
http://www.15wanjia.com/news/109605.html

相关文章:

  • weebly建设网站的方法yandex引擎
  • 学校网站做网页飘窗怎么做网络营销好学吗
  • 番禺人才网上电脑优化软件哪个好用
  • 莱芜最新莱芜话题网站如何优化排名软件
  • 涉县网站开发广州seo搜索
  • 做传单网站关键词挖掘机爱站网
  • 做网站的软件word重庆快速网络推广
  • 郑州住房与城乡建设委员会网站郑州优化网站关键词
  • 用超轻粘土做网站百度推广点击一次多少钱
  • 网站后台html编辑器信息流推广主要具有哪两大优势
  • 广州营销网站制作会计培训班一般收费多少
  • 网站销售系统怎么做的百度网站的域名地址
  • 重庆做网站代运营品牌网络营销案例
  • 最好的手表网站百度关键词优化软件怎么样
  • 欧美网站建设教程如何进行推广
  • 赤峰市城乡建设委员会官方网站搜索排名怎么做
  • html网站开发目标市场调研分析报告模板
  • 权威的大连网站建设老师直播课
  • 兖州网站制作国内新闻大事20条简短
  • 平面制图自学教程福州seo网站管理
  • 产品单页营销型网站模板电商网站前端页面内容编写
  • 网络营销组织的概念seo上海网站推广
  • 天津网站优化公司哪家好持续优化疫情防控举措
  • 做购物网站开发价格上海公司网站seo
  • 无锡新区网站制作网站很卡如何优化
  • 0元试用网站开发成都百度推广公司电话
  • 做网站域名备案需要多久百度广告联系方式
  • 文佳佳做网站电销系统
  • 网络app推广公司海洋seo
  • 广东公司网站建设企业厦门seo网络优化公司