- 博客(62)
- 收藏
- 关注
原创 pytest基础知识点汇总
一、pytest 默认约定:(1)pytest将在当前目录及其子目录中运行所有格式为test_*.py和*_test.py的文件 如果发现只执行当前文件,可能是设置问题: file---setting---tools---python integrated tools---test---default test runner中设置为unittests即可(2)测试方法|函数必须是test开头(3)测试类必须是Test开头(4)assert 直接添加至测试用例后面,失败测试结果是F,成
2022-02-25 13:53:32
991
1
原创 基于pytest框架实现allure测试报告生成之展示测试数据
一、添加测试数据可以通过使用 pytest.mark.parametrize()装饰器实现。"""使用 pytest.mark.parametrize 添加测试数据"""import osimport allureimport pytest# 登录操作逻辑函数,即执行登录的函数def login(username, password): """登录""" print("用户账户:%s" % username) print("用户密码:%s" % password)
2022-02-24 14:28:29
836
原创 基于pytest框架实现allure测试报告生成之用例描述参数feature,story,title
allure用例描述参数汇总:epic、feature、story、title之间是层级关系的:epic > feature(模块功能点描述) > story(用户场景或故事) > title(测试用例标题)。下面展示feature、story和title的使用栗子:"""allure中对应上元素的一些常见参数:以下概念从大至小 (1)feature:模块名称 (2)story:用例故事或场景 (3)title:对应用例的标题"""import os
2022-02-24 12:44:16
1528
原创 基于pytest框架实现allure测试报告生成之用例描述参数severity
allure用例描述参数汇总:@allure.severity() 用例等级用例等级 allure对用例的等级划分成五个等级:(严重----轻微) blocker 阻塞缺陷(功能未实现,无法下一步) critical 严重缺陷(功能点缺失) normal 一般缺陷(边界情况,格式错误) minor 次要缺陷(界面错误与ui需求不符) trivial 轻微缺陷(必须项无提示,或者提示不规范)使用方法:@allure.severity('等级名称')用例前
2022-02-23 15:37:59
354
原创 基于pytest框架实现allure测试报告生成之基础报告生成操作(一)
一、写一个简单的基于pytest的测试用例test_allure.py:import osimport pytest# pytest的测试用例文件必须是 test_开头或者_test结尾命名# pytest的测试用例类必须是Test开头class Testallure: def test_1(self): print('这是test_1') def test_2(self): print('这是test_2')if __name__ ==
2022-02-23 11:53:24
499
原创 allure生成测试报告环境部署
allure测试报告自动生成美观的图表,测试结果一目了然,可谓是测试报告生成的神器。先来配置一下allure环境。本机已配置好 python,且安装了插件pytest。1、下载安装JDK 1.8建议oracle官方下载(需要注册oracle帐号),https://www.oracle.com/java/technologies/downloads/,根据需要选择对应电脑系统的java版本。我选择的是java8 window系统下的X64 Installer。运行下载的.exe文件并按照提示安装即可
2022-02-17 14:41:07
1359
原创 python日志模块logging
python自带日志模块logging的使用方法:1、首先了解logging模块中的三个组件(1)loggers 日志器 日志入口(2)handlers 处理器 日志信息显示的选择,是显示在文本中还是控制台(3)formatter 格式器 日志信息的格式设置2、其次了解常见日志级别1级别,debug级别:调试级别,一般日志中不会出现2级别,info级别:程序正常3级别,warning级别:警告级别,程序有问题但不影响执行4级别,error级别:错误级别,程序出现错误,需要关注5级别,cr
2021-11-10 12:43:26
652
1
原创 python之RobotFramework的实战
1、cmd执行ride.py2、创建project(1)新建一个project(2)导入数据包导包不成功的右键delete即可。3、实现WebUI测试(1)关键字的查找RF是关键字驱动,在ride界面上Tools下的Search Keywords就是用来检索关键字的。在case_01文件中输入点击run test或者快捷键F8执行测试用例。注意这里需要将执行的测试用例勾选上才能被执行:(2)丰富测试内容open browser #打开浏览器,后面指定打开url与浏览
2021-05-27 17:13:56
350
2
原创 RobotFramework关键字没有open browser问题解决
RobotFramework关键字没有open browser问题解决:是由于新版本RF更新不稳定,解决办法就是安装低版本的RF。根据RobotFrameworkUserGuide的提示:2.8.7和2.9.2都比较的稳定,而3.0版本以后变化就比较大。所以根据提示安装2.9.2版本的试一试安装之前先将之前安装的RF卸载:pip uninstall robotframework开始安装指定版本的RF:pip install robotframework==2.9.2报错了,找不到对应的版本,会
2021-05-27 15:42:36
2690
原创 python至RobotFramework环境搭建
RobotFramework(RF)是python自动化测试中比较重要的测试框架。可以实现WebUI、APPUI、接口的自动化测试。主要特点:(1)关键字驱动(2)不用写代码就可以实现自动化测试(3)支持数据驱动的测试用例(4)HTML格式的测试结果,方便阅读(5)易于管理,方便集成,扩展性强等本机已安装python361、安装RF组件打开cmd依次输入执行安装指令:(1)pip install robotframework(2)pip install robotframework-ri
2021-05-27 11:36:54
190
原创 python之excel操作openpyxl
openpyxl操作excel简单实用,功能强大,可以对excel进行增删改查等操作。workbook:工作簿,就是excel文件sheet:工作表,workbook中有多个sheet,比如 sheet1,sheet2等cell:单元格,存储数据对象开始实际练习:1、cmd中安装openpyxl (pip install openpyxl)2、模块中导包 import openpyxl,床架或者打开一个excel文件和工作表from openpyxl.worksheet import work
2021-05-26 20:43:44
278
原创 python之unittest的ui测试用例02_ddt与yaml的使用
之前写过web ui测试的简单用例python之unittest的ui测试用例01接下来要慢慢增加一些要求精进代码:(1)测试点增多,比如之前测试打开浏览器并输入字符进行检索,如果增加检索内容,比如测试浏览器检索英文、中文、法文等,当然可以写多个def test用例,只需要将send_keys(“python”)中的python换成其他检测内容即可,但是看起来会比较冗余,这里可以将各测试用例前后都会执行的相同操作放到setUp和tearDown中:import unittestfrom selen
2021-05-21 11:31:15
474
3
原创 python之unittest的ui测试用例01
1、承上:unittest测试用例的框架之前文章写过unittest单元测试的示例,展示了unittest的用例框架Python单元测试之Unittest测试用例框架。总结下来unittest测试用例框架:import unittest #导包class test_name(unittest.testCase): #创建一个继承于testCase类的测试类 def setUp(self): print("每个测试用例执行前执行") def tearDown(self): print("
2021-05-20 18:27:36
368
3
原创 python 基础知识梳理 01之容器类型数据
刷题时候发现知识掌握不牢固,需要梳理汇总知识点。基础知识:容器类型数据 set、dict、list、tuple、string。其中list、tuple和string同属于序列。python之set,无序的元素集合,set(value)函数实现获得,且无重复元素增:set.add() 增加一个元素set.update() 增加多个元素删:set.remove()指定一个元素删除,元素不存在会报错set.discard()删除指定的一个元素,元素不存在不会报错set.pop() 随机删除set
2021-05-19 13:14:21
252
原创 python刷题时遇到的知识点01
(1)round(number,digits)例如a = round(3.1415926,2)print(a)#结果返回 3.14;b = round(3.1415926,0)print(b)#返回的结果 3.0;c = round(2.69,0)print(c)#返回结果是3.0所以规则是:根据digits来决定前面number保留几位小数,将number进行四舍五入。但经过实验发现digits是0的时候返回的是留有小数点后一位。(2)filter(function函数,iter
2021-05-19 11:20:58
169
原创 linux常用命令之查看进程 ps命令与三剑客
linux查看进程情况(1)ps aux (可以查看CPU占有率和MEM内存的使用率)(2)ps -ef(查看进程的父进程PPID,子进程等详细信息)linux三剑客sed:擅长取行和替换(1)Sed替换格式是:sed -i ‘s/要替换的内容/替换成的内容/g’ 文件名s :取代,可以直接进行取代的工作g: 是全局的意思(2)sed按行输出sed -n 3p 文件名 输出第三行内容grep:擅长查找(1)grep -n 要匹配的内容 文件名显示匹配到的行内容-n显示行号(2)
2021-05-18 19:27:52
132
原创 python数据结构之二叉树
1、什么是二叉树定义大家看过很多了,直接上图好理解:二叉树的特点:(1)每个节点有0-2个子树,子树分左右,即使只有一个子树也要分左右;(2)除根节点以外,任何一个节点只有一个父节点2、二叉树的遍历实现(迭代)(1)左序遍历class Treenode(): def __init__(self,data): self.data = data self.lchild = None self.rchild = Nonedef dispa
2021-05-11 12:16:33
1017
3
原创 python之信号量方式实现多进程
进程(process)是系统资源分配和调度的最小单位,一个程序至少有一个进程,而一个进程至少有一个线程。多进程开发目的在于充分利用多核系统。实现多进程的方式有很多,这篇文章分享一下利用信号量(Semaphore)实现多进程。from multiprocessing import Process,Semaphoreimport timedef process_a(sema_a,sema_b): while True: sema_a.acquire() prin
2021-05-10 18:20:27
484
原创 python之多线程同步实现
线程(Thread)是CPU分配资源和调度的最小单位。一个程序至少有一个进程,而一个进程至少有一个线程。如果进程中有多个线程且多个线程共享进程的资源就会出现线程对共享资源的使用问题,如此需要线程间的同步。线程间的同步实现有多种机制,这里和大家分享两个实现方式: 锁机制 和 信号量 。1、锁机制_Lock类实现线程同步其中acquire函数进行加锁,用realease函数进行解锁。import threadingimport timedef thread_a(lock_a,lock_b):
2021-05-10 12:36:29
298
原创 python网络编程之基于TCP的套接字socket
1、概念:什么是Socket和TCPSocket(套接字)使得应用程序通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。最开始套接字是用来同一台电脑上的不同应用程序之间的通信。所以套接字分为两种:(1)AF_UNIX基于文件类型,调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信;(2)AF_INET基于网络类型,大部分网络编程使用AF_INET。TCP(Transmission Control Protoco
2021-05-10 11:02:00
155
2
原创 python之I/O操作
python I/O操作就是通过存储介质或网络读取数据。包括有 程序的I/O操作 和 文件的I/O操作。程序的I/O操作:inputname = input("please enter your name:")print("name:" + str(name))文件的I/O操作文件操作流程:(1)打开文件 open(2)对文件操作 read,write,append等(3)关闭文件 closef = open(filename,mode="") #打开文件,mode="r"只读不写,m
2021-05-07 16:37:55
350
1
原创 python数据结构之队列Queue
队列Queue是一种先进先出(FIFO,First In First Out)的线性表。允许一端进行插入(rear),对应的另一段进行删除(front)。本篇包含以下内容:(1)Queue的基本格式(2)入队列en_queue(3)删除数据函数 de_queue1、Queue的基本格式class Queue(): def __init__(self,size): self.size = size self.front = -1 #设置front初始值,每
2021-05-05 18:17:19
877
2
原创 python数据结构之栈stack
栈(Stack)是一种运算受限的线性表。按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。文章内容包含:(1)栈的基本格式(2)压栈 push_stack(3)出栈 pop_stack(4)取栈顶 peek_stack1、栈的基本格式class Stack(): def __init__ (self,size): self.size = size #栈空间大小
2021-05-05 17:12:02
304
原创 python数据结构之链表的插入、修改、删除、反转
本篇主要包含的python数据结构链表内容:(1)链表的语法结构(2)链表展示display_linklist(3)插入节点insert_node(4)修改节点update_node(5)删除节点dele_node(6)反转链表reverse_linklist1、链表的语法结构class Node(object): def __init__ (self, data): self.data = data self.next = None #这里添加链表di
2021-05-05 15:38:29
1409
原创 C语言之关键字static、const、extern
1、static:声明静态变量声明局部变量,静态局部变量的特点:(1)声明时未赋初值,编译器会自动赋值为0,而普通变量则是不确定的;(2)静态变量在全局数据区分配内存,即使函数返回,静态变量的数值也是保持不变。#include<stdio.h>int c =9;int d;void static_test(void){ static int a = 0;//静态变量,如果不赋初值,编译器会初始化它为0 int b = 0;//普通变量 a++; b++; printf(
2021-05-05 01:10:32
388
原创 C语言之字符串转int和int转字符串
字符串与int整型中间的转换举个简单的例子:字符’a’转换成int整型是多少,ASCII码是97,而’0’(字符零)对应数值0,这样字符’a’ - '0’得到的结果就是字符a对应的int整型。由此int 97转换成字符,则是97 + '0’的结果。1、字符串转int#include<stdio.h>int string2int(char b[],int len){ int i; int c = 0;//string2int reslut int c1; for(i=0;i
2021-05-04 22:48:29
11218
原创 C语言之判断大端、小端
1、判断大端、小端存储需要了解:什么是大端小端?大端存储:就是把一个数的低位字节序的内容存放到高地址处,高位字节序的内容存放在低地址处。数值0x12345678的存储小端存储:就是把一个数的低位字节序的内容存放到低地址处,高位字节序的内容存放在高地址处。数值0x12345678的存储如果是单个字符的存储,如果是大端存储单字符就存储在高地址,而小端存储单字符就存储在低地址。由上内容再结合联合体union的一些特点:(1)所有成员占用同一段内存,且占用内存的大小是占内存最大成员的大小的特点;(2
2021-05-04 21:53:52
874
原创 C语言之求int型数值二进制中1的个数
int型数值占内存4个字节,就是4 * 8 = 32个字符。如果二进制每一位上都判断是否为1的话,最多需要32次来判断。还有两个比较重要的符号需要了解:(1)& 位运算符是把两个不同操作数内相同位置的位关联起来的AND(和),相同位置的值都是1则运算结果该位还是1,一旦有一个是0或两个都是0,则位运算的结果该位都是0。(2)>> << 移位运算符移位运算符将左操作数的二进制向左/右移动数个位置,至于移动几个位置,由右操作数指定。移位数值与移动位数都要求是整数。
2021-05-04 20:32:50
1199
原创 C语言之数组反转
数组反转是数组常见操作。大概来写一写数组反转添加上自己的理解注释。#include <stdio.h>#define N 6int main(){ int a[N] = {0,1,2,3,4,5}; int i; int t; int j; //反转算法 for(i=0;i<N/2;i++) { t = a[i]; a[i] = a[N-1-i]; a[N-1-i] = t;//遍历输出,每对换一对数值就打印一次数组
2021-05-04 18:50:45
11340
原创 C语言之循环语句while、do while、for实例
C语言中三个最重要的循环语句是while、do while、for。循环语句是在满足一定条件下反复执行某些操作的语句,即处理重复操作问题。1、while语句(1)while语句格式:while(条件){ 循环体语句;}(2)while 执行过程:(3)实例:用while语句实现输出 1 - n 之间的所有整型数字(包括n)#include <stdio.h>int main(){ //要求:while循环输出1-n之间的整型数值(包括n) int i =
2021-05-01 16:23:51
2034
原创 C语言之字符串的输入输出
C语言中没有字符串变量即没有string类型,但字符串可以采用字符数组来表示。字符数组就是一系列字符的集合,当字符数组中有‘\0’时才是字符串,没有则是字符集合。1、字符串的赋值形式//有数组长度时char a[3] = {'h','e','l'};//全部赋值则是字符集合,不是字符串char a[3] = {'h','e'};//不完全赋值,后面未赋值元素为'\0',是字符串//没有数组长度char a[]={'h','e','l','l','o',' ','w','o','r','l','
2021-04-30 23:44:19
736
1
原创 C语言之数组冒泡排序
冒泡排序是一种简单、常见的排序方式。#include <stdio.h>int main(){ int a[]={90,8,60,75,25,0,100,50,30,95}; int n = sizeof(a)/sizeof(a[0]);//数组长度 int i=0;//比较的轮数,一轮冒出一个数值,直至剩下一个数值不需要比较,即i最大 = n-1; int j=0;//每轮比较的次数,每一轮的两两比较次数都随着轮数变大而变
2021-04-30 14:59:45
572
原创 C语言之二维数组定义、初始化、赋值、求最大最小、求和
数组可以用来存储多个相同类型的数据,并占用多个连续的内存空间来存储数据。二维数组是有两个下标的数组。1、二维数组定义语法:类型名 数组名[行数][列数];#includ <stdio.h>#define X 5#define Y 6int main(){ int a[3][3]; int b[1+4][2+1]; int c = 2; int d = 3; int e[c][d];//不能是变量,会报错 int f[X][Y];//
2021-04-28 20:58:54
10958
原创 C语言之一维数组定义、初始化、赋值、求最大最小、求和
数组可以用来存储多个相同类型的数据,并占用多个连续的内存空间来存储数据。一维数组是只有一个下标的数组。1、一维数组定义语法:类型名 数组名[数组元素个数/数组长度];#includ <stdio.h># define length 5int main(){ int a[5];//相当于定义了5个int类型的变量 int b[1+4];//不报错 int c = 5; int d[c];//数组长度不能是变量,会报错 int e[length]
2021-04-28 17:30:39
6746
原创 gcc编译出错collect2: error: ld returned 1 exit status的解决办法
linux上编写C代码之后编译之后再执行,再编译过程中出现以下错误:解决办法:新建一个文件将之前编译出错的文件内容copy过来,再对paste之后的新建文件进行编译执行即可。
2021-04-27 17:08:37
12988
1
原创 C语言数据类型之联合体Union
1、联合体Union和结构体Struct的比较:联合体Union和结构体Struct均属于特殊的数据类型,都允许成员是不同类型的值。两者的区别在于结构体的各个成员会占用不同的内存,互相之间没有影响;而联合体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),联合体占用的内存等于最长的成员占用的内存。2、联合体Union语法:union tag //tag 即联合体名称{int member1;//联合体成员,成员之间
2021-04-27 16:16:10
1199
2
原创 C语言数据类型之结构体struct
结构体struct一种用户可以自定义的数据类型,它允许存储不同类型的数据项,存储的数据项被称为struct成员。1、结构体的语法:struct tag //struct tag,更清晰规范一般会写上{char member1;//struct members,可以为空int membe2;char member3;}[structure variables,一个或多个结构体变量,多个变量由逗号隔开];一般结构体中struct tag、struct member、structure vari
2021-04-27 00:48:36
2197
1
原创 C语言数据类型之基本数据类型
聊聊C语言的基本数据类型。1.int(4个字节)2.float(4个字节)3.short (2个字节)4.long(8个字节)5.char(1个字节)6.double(8个字节)一、为查看以上类型的大小,我们新建一个文件basic_data_type.c,通过vim进行编辑:#include <stdio.h>int main(){int a = 10;printf("int a = %d\n",a);printf("size = %x\n",sizeof(a));
2021-04-26 18:36:57
122
原创 C语言实现输出 Hello World!
是在Linux系统中实现的输出。作为初学者同时使用了linux图形界面。一、打开linux终端terminal,新建一个文件 touch helloworld.c。如果想让新建文件显示在桌面上,可以在新建前切换目录 cd Desktop。二、vim helloworld.c 打开helloworld.c文件,i 键(英文小写字母)进入编辑模式,输入代码:#include <stdio.h>int main(){ printf("Hello World!\n");}三、输
2021-04-26 16:52:29
22644
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人