Python脚本批量造数据、跑定时任务协助测试

批量造数据

  • 连接Mysql的信息
    1. 1 import pymysql

    2. 2 # 数据库连接信息

    3. 3 # 多个库要有多个conn

    4. 4 conn = pymysql.connect(

    5. 5 host="主机",

    6. 6 user="用户名",

    7. 7 password="密码",

    8. 8 database="库名"

    9. 9 )

    10. 10 conn1 = pymysql.connect(

    11. 11 host="主机",

    12. 12 user="用户名",

    13. 13 password="密码",

    14. 14 database="库名"

    15. 15 )

    16. 16

    17. 17 # 创建游标对象

    18. 18 cursor = conn.cursor()

    19. 19 cursor1 = conn1.cursor()

    20. 20

    21. 21 # 执行对应的SQL

    22. 22 cursor.execute

    23. 23 # 获取执行结果

    24. 24 Result=cursor.fetchall()

 场景一:基于已有的csv文件,分批次读取csv文件中的字段值作为变量填充到执行的SQL语句

  • 分批读取csv文件中的值
  1. 1 csv_file_path = 'csv文件目录'

  2. 2 with open(csv_file_path, 'r',encoding='utf-8') as file:

  3. 3 reader = csv.reader(file)

  4. 4 next(reader) # Skip the header row

  5. 5

  6. 6 batch_size = 100 # 每批处理的数量

  7. 7 total_items = 3100 # 总共需要处理的数量

  8. 8

  9. 9 for i in range(0, total_items, batch_size):

  10. 10 # 在每次循环中处理 batch_size 个项目

  11. 11 # 可以在循环体内部使用 i 作为起始索引

  12. 12

  13. 13 for j in range(i, min(i + batch_size, total_items)):

  14. 14 row = next(reader)

  15. 15 # 打印这一行的数据

  16. 16 print(row)

 场景一:基于已有的csv文件,分批次读取csv文件中的字段值作为变量填充到执行的SQL语句

  • 分批读取csv文件中的值
  1. 1 csv_file_path = 'csv文件目录'

  2. 2 with open(csv_file_path, 'r',encoding='utf-8') as file:

  3. 3 reader = csv.reader(file)

  4. 4 next(reader) # Skip the header row

  5. 5

  6. 6 batch_size = 100 # 每批处理的数量

  7. 7 total_items = 3100 # 总共需要处理的数量

  8. 8

  9. 9 for i in range(0, total_items, batch_size):

  10. 10 # 在每次循环中处理 batch_size 个项目

  11. 11 # 可以在循环体内部使用 i 作为起始索引

  12. 12

  13. 13 for j in range(i, min(i + batch_size, total_items)):

  14. 14 row = next(reader)

  15. 15 # 打印这一行的数据

  16. 16 print(row)

场景二:随机生成特殊字段的值,作为变量填充到Insert语句中

  • 随机生成统代
    1. 1 import random

    2. 2 import string

    3. 3 def generate_credit_code():

    4. 4 # 生成第1位登记管理部门代码

    5. 5 管理部门代码 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D']

    6. 6 register_department = random.choice(管理部门代码)

    7. 7 # print('管理部门代码为',register_department)

    8. 8

    9. 9 # 生成2-9位组织机构代码

    10. 10 organizations_code = []

    11. 11 for _ in range(8):

    12. 12 org_code = ''

    13. 13 for _ in range(8):

    14. 14 org_code += random.choice(string.ascii_uppercase + string.digits)

    15. 15 organizations_code.append(org_code)

    16. 16 organizations_code=random.choice(organizations_code)

    17. 17 # print('组织机构代码为',organizations_code)

    18. 18

    19. 19

    20. 20 # 生成10-17位统一社会信用代码

    21. 21 unification_credit_code = ''

    22. 22 for _ in range(8):

    23. 23 unification_credit_code += random.choice(string.ascii_uppercase + string.digits)

    24. 24 # print('统一社会信用代码为',unification_credit_code)

    25. 25

    26. 26 # 组合统一社会信用代码

    27. 27 credit_code = f"{register_department}{''.join(organizations_code)}{unification_credit_code}"

    28. 28 return credit_code

随机生成注册号

  1. 1 mport random

  2. 2

  3. 3 #这个注册号是由15个随机数字组成的,使用random.choice方法从0-9中随机选择数字。这个方法会被调用15次,每次都会生成一个随机数字,然后通过字符串的join方法将这15个数字拼接在一起。

  4. 4 def generate_reg_code():

  5. 5 # 15位注册号,以0开头

  6. 6 reg_code = ''.join(random.choice('0123456789') for i in range(15))

  7. 7 return reg_code

结合python+pytest+fixture 实现定时任务接口调用

目录结构

(有些乱。。。

-- config.ini     存放的是系统固定的url之类的

-- conftest.py  一般用于放登录接口,用户返回token,利用fixture被其他接口使用

  1. 1 import pytest

  2. 2 import requests

  3. 3 import pymysql

  4. 4 from config import readconfig

  5. 5 readcon = readconfig.Read()

  6. 6

  7. 7

  8. 8 @pytest.fixture(scope="session")

  9. 9 # 这个方法是pytest封装公共方法的一个文件,文件名必须是(conftest.py)

  10. 10 # 作用: 其他地方在使用这个方法时就不用from XX import cc 然后也不用实例化了

  11. 11

  12. 12

  13. 13 def test_login():

  14. 14 msg = {

  15. 15 "username": '用户名',

  16. 16 "password": '加密后的密码'

  17. 17 }

  18. 18

  19. 19 url =readcon.get_URL("baseurl")

  20. 20 cc = requests.post(url+"api/uxxxxxxr/login", params=msg)

  21. 21 getjson = cc.json()

  22. 22

  23. 23 # 获取token

  24. 24 tok = getjson['data']['token']

  25. 25 userid = getjson['data']['userId']

  26. 26 return tok, userid

 定时任务

  1. import pytest

  2. import requests

  3. from config import readconfig

  4. read = readconfig.Read()

  5. class TestCase1:

  6. global url, tim # 全局变量,便于其他地方调用

  7. url = read.get_URL("baseurl")

  8. tim = read.get_URL("timeout")

  9. def test_case1(self, test_login):

  10. head = {'Content-Type': 'application/json', 'Authorization': test_login[0]} # test_login[0]为token

  11. NewtestCreditCodeList = []

  12. SelectNewtestGs = "select 字段1,字段2,字段3 from 数据表 order by id desc limit 100"

  13. cursor.execute(SelectNewtestGs)

  14. SelectNewtestResult = cursor.fetchall()

  15.       

  16. for tuple in SelectNewtestResult:

  17. NewtestCreditCodeList.append(tuple[2])

  18. NewtestGsCreditCodeListResult = ', '.join('"' + i + '"' for i in NewtestCreditCodeList)

  19. print('结果为', NewtestGsCreditCodeListResult)

  20. r = requests.get(url + 'api/exxxxxh/txxx/xxxxx?入参='+NewtestGsEidListResult, headers=head)

  21. print(r.json())

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

warning: in the working copy of ‘wxss/8.wxss‘, LF will be replaced by

git add --renormalize . git commit -m "Normalize line endings"

【组合数学】2842. 统计一个字符串的 k 子序列美丽值最大的数目

本文涉及知识点 组合数学汇总 LeetCode 2842. 统计一个字符串的 k 子序列美丽值最大的数目 给你一个字符串 s 和一个整数 k 。 k 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是 唯一 的,也就是说每个字符在子序列里只出现过一次。 定义 f…

24届电信红队实习生面经

sql注入的一些:原理、打的靶场的常见绕过、问了一些函数 (load_file、 outfile这些)、后利用 (mysql的udf提权的原理、条件、利用、其他像mssql这些数据库的提权手段、这些就没细问了, 就问有哪些方式; 问了有没有实战遇到mysql的…

【小黑送书—第二十期】>>K邻算法:在风险传导中的创新应用与实践价值(文末送书)

01 前言 在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考,不仅促进业界爱好者之间的交流,更期望从技术层面为企业在图数…

8款好用的电脑监控软件分享丨好资源不私藏!

电脑已经成为我们日常生活和工作的重要工具。随之而来的是,电脑监控的需求也逐渐增加。为了帮助大家更好地管理和监控电脑使用情况,本文将为您推荐8款好用的电脑监控软件。这些软件功能强大,易于使用,适用于各种场景,让…

【Leetcode】741.摘樱桃

给你一个 n x n 的网格 grid ,代表一块樱桃地,每个格子由以下三种数字的一种来表示: 0 表示这个格子是空的,所以你可以穿过它。 1 表示这个格子里装着一个樱桃,你可以摘到樱桃然后穿过它。 -1 表示这个格子里有荆棘&am…

揭秘依赖注入:软件开发人员的基本指南

Dependency injection (DI) is a design pattern and programming technique to manage dependencies between different components. 依赖注入(DI)是一种用于管理不同组件之间依赖关系的设计模式和编程技术。 In DI, the dependencies of a class or ot…

【Linux】-Linux基础命令[2]

目录 一、目录切换相关命令 1、cd 2、pwd 二、相对路径、绝对路径和特殊路径符 1、相对路径和绝对路径 2、特殊路径符 三、创建目录命令(mkdir) 四、文件操作命令 1、touch 创建文件 2、cat查看文件内容 3、more查看文件内容 4、cp命令复制文…

【Unix】FlatBuffers 在 C++ 项目中的使用教程

在 C 项目中使用 FlatBuffers 主要涉及以下几个步骤: 1. 安装 FlatBuffers 首先,你需要在你的系统上安装 FlatBuffers 编译器和库。你可以从 FlatBuffers 的 GitHub 仓库 下载源码并编译: git clone https://github.com/google/flatbuffer…

【JAVA |数组】数组定义与使用、常见的Arrays类介绍

目录 一、前言 二、数组的创建和初始化 三、数组的使用 四、数组是引用类型 1.JVM的内存分配 2.与引用类型变量 3.null 五、二维数组 六、Java中Arrays类的常用方法 1. Arrays.fill ->填充数组 2. Arrays.sort ->数组排序 3. Arrays.toString ->数组打印 …

美易官方:美国经济已现裂痕?美联储再不降息,崩溃即将到来!

美国经济,一度被誉为全球最强大的经济体,如今似乎已显露出脆弱的迹象。华尔街的分析师们纷纷发出警告,呼吁美联储尽快降息,否则一场经济崩溃可能即将来临。 自美联储大幅加息以来,经济学家们一直警告称,高利…

那个在买珠宝的年轻人

金价搭上过山车,今年以来价格一路飙涨。 珍珠身价同步飙升,晋级珠宝圈“新宠”。 文玩圈“减龄”,盘珠串不再只是“老头乐”。 月薪3000的年轻人,悄悄实现“宝石”自由。 黄金珠宝走俏,这届年轻人到底有着怎样的珠宝…

开抖音小店需要交多少保证金?全类目选择,一篇了解

哈喽~我是电商月月 做抖音小店前大家都会搜索“入驻抖音小店需要准备什么东西?”其中就包含了一项:类目保证金的缴纳 那到底要交多少钱?很多新手朋友还是不太了解 今天我就给大家解答这个问题,首先,我们要知道抖店的…

高并发-线程池

文章目录 高并发-线程池2024心得好的博客必会面试题为什么使用线程池线程池的实现原理线程池的拒绝策略阻塞队列已满,在提交任务会发生什么问题threadlocal原理和使用多线程配置 高并发-线程池2024 心得 面试都是围绕着三高展开,高并发,高可…

2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)

2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024) 2024 International Conference on Virtual Reality, Image and Signal Processing(ICVISP 2024) 会议基本信息 会议时间:2024年8月2-4日 会议地点&#x…

2024年5月软考,别再傻傻啃书了!

备考2024年软考,不听课也不刷题,只是看教材的话,想要考试通过,几乎是不可能的,特别是基础比较薄弱的考生。 为什么只看教材通不过? 如果只是把教材从头到尾看一遍,毫无目的地看书,…

数据结构-线性表-应用题-2.2-5

从顺序表中删除其值在给定值s与t之间&#xff08;包括s和t&#xff0c;且s<t&#xff09;的所有元素&#xff0c;若s或t不合理或顺序表为空&#xff0c;则显示出错信息并退出运行。 从前往后扫描顺序表L&#xff0c;用k记录元素值在[s,t]的元素的个数&#xff0c;对于不在其…

FPGA学习笔记(1)——Vivado和HLS

1 Vivado设计 1.1 FPGA基本知识 Xilinx Atrix-7使用6输入LUT结构&#xff08;0-63&#xff09;CLB&#xff1a;可配置逻辑块Slice&#xff1a;每个CLB包含2个Slice(包含查找表LUT和8位寄存器REG)布线池&#xff1a;围绕在CLB周围&#xff0c;衔接FPGA的资源调度I/O块&#xf…

代码随想录35期Day32-Java

Day32题目 LeetCode122.买股票的最佳时机 核心思想&#xff1a;很简单&#xff0c;只要第二天比第一天贵&#xff0c;就第一天买入&#xff0c;第二天卖出 class Solution {public int maxProfit(int[] prices) {// 只要后一天比这一天价钱高就买&#xff0c;然后第二天卖出…

okcc呼叫中心为什么软电话已经注册,但是坐席监控却显示离线?

这种情况可能有几种可能的原因&#xff1a; 网络连接问题&#xff1a; 坐席监控系统可能无法正常与软电话建立连接&#xff0c;这可能是由于网络故障、防火墙设置或路由问题等引起的。 配置错误&#xff1a; 可能存在软电话配置或坐席监控系统配置方面的错误&#xff0c;导致无…