09 2018 档案

摘要:前言 前面【Locust性能测试2-先登录场景案例】讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如【学信网:https://account.chsi.com.cn/passport/login】的登录接口请求参数 阅读全文
posted @ 2018-09-26 09:32 含笑半步颠√ 阅读(544) 评论(0) 推荐(0) 编辑
摘要:前言 实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复。 例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试 准备数据 虚拟用户locust1locust2locust3locust4locust5locust6locust7l 阅读全文
posted @ 2018-09-26 09:31 含笑半步颠√ 阅读(313) 评论(0) 推荐(0) 编辑
摘要:前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的”--html=report.html“就是从命令行传入的参数 对应的参数名称是html,参数值是report.html conftest配置参数 1.首先需 阅读全文
posted @ 2018-09-26 09:21 含笑半步颠√ 阅读(2027) 评论(0) 推荐(0) 编辑
摘要:前言为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行。 但是登录的账号不能写死,有时候我想用账号1去登录,执行用例1,用账号2去登录执行用例2,所以需要对函 阅读全文
posted @ 2018-09-26 09:10 含笑半步颠√ 阅读(592) 评论(0) 推荐(0) 编辑
摘要:前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面2个用例就没测试必要了,直接跳 阅读全文
posted @ 2018-09-25 10:19 含笑半步颠√ 阅读(445) 评论(1) 推荐(0) 编辑
摘要:前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试。 常见示例是在非Windows平台上跳过仅限Windows的测试,或跳过测试依赖于当前不可用的外部资源(例如数据 阅读全文
posted @ 2018-09-25 09:19 含笑半步颠√ 阅读(273) 评论(0) 推荐(0) 编辑
摘要:前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是ios用例,哪些是android的,运行代码时候指定mark名称运行就可以 mark标记 1.以下用例 阅读全文
posted @ 2018-09-25 09:13 含笑半步颠√ 阅读(1712) 评论(0) 推荐(0) 编辑
摘要:前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed assert pytest允许您使用标准Python断言来验证Python测试中的期望和值。例如, 阅读全文
posted @ 2018-09-19 09:01 含笑半步颠√ 阅读(277) 评论(0) 推荐(0) 编辑
摘要:前言 pytest.mark.parametrize装饰器可以实现测试用例参数化。 parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 运行结果 在这个例子中设计的,只有一条输入/输出值的简单测试功能。和往常一样 函数的参数,你可以在运行结果看到在输入和输出值 阅读全文
posted @ 2018-09-19 08:54 含笑半步颠√ 阅读(528) 评论(0) 推荐(0) 编辑
摘要:前言 前面是在web页面操作,需要手动的点start启动,结束的时候也需要手工去点stop,没法自定义运行时间,这就不太方便。 locust提供了命令行运行的方法,不启动web页面也能运行,这就是no-web模式启动 无web-UI模式 在没有Web UI的情况下运行locust - 可以打开cmd 阅读全文
posted @ 2018-09-18 14:34 含笑半步颠√ 阅读(187) 评论(0) 推荐(0) 编辑
摘要:前言 提到性能测试,大部分小伙伴想到的就是LR和jmeter这种工具,小编一直不太喜欢写这种工具类的东西,我的原则是能用代码解决的问题,尽量不去用工具。 python里面也有一个性能测试框架Locust,本篇简单的介绍Locust的基本使用,希望越来越多的小伙伴能一起爱上它! 环境准备: pytho 阅读全文
posted @ 2018-09-18 14:32 含笑半步颠√ 阅读(290) 评论(0) 推荐(0) 编辑
摘要:前言 有很多网站不登录的话,是无法访问到里面的页面的,这就需要先登录了实现场景:先登录(只登录一次),然后访问页面->我的地盘页->产品页->项目页 官方案例 下面是一个简单的locustfile.py的简单示例: 这里我们定义了许多Locust任务,它们是带有一个参数(Locust类实例)的普通P 阅读全文
posted @ 2018-09-18 14:25 含笑半步颠√ 阅读(979) 评论(0) 推荐(0) 编辑
摘要:协程 问题一: 生成器与函数的区别?生成器分阶段的返回多个值,相当于有多个出口(结果); yield 问题二: 协程与生成器的区别?有多个出口,同时可以有多个入口 问题三: 协程算并发嘛?严格来说 不算。如果有一个地方卡住了, 会一直卡问题四: 协程的意义?最主要"配合io多路复用使用",当前的意义 阅读全文
posted @ 2018-09-17 10:02 含笑半步颠√ 阅读(157) 评论(0) 推荐(0) 编辑
摘要:可以重复利用的线程 直接上代码 结果: 线程池的简单实现 池的概念 主线程: 相当于生产者,只管向线程池提交任务。 并不关心线程池是如何执行任务的。 因此,并不关心是哪一个线程执行的这个任务。线程池: 相当于消费者,负责接收任务, 并将任务分配到一个空闲的线程中去执行。 代码实现如下: 结果: Py 阅读全文
posted @ 2018-09-17 00:13 含笑半步颠√ 阅读(419) 评论(0) 推荐(0) 编辑
摘要:独立的进程内存空间与共享的服务器进程空间 知识点一: 进程间通信的限制 进程是独立的,互不干扰的独立内存空间我们想不能修改变量但是,深层次问题是,这个进程与那个进程完全失去了联系 知识点二: 进程间通信的解决方案 1. 管理器负责与公共进程通信2. 代理负责操作共享的空间 知识点三: Manger对 阅读全文
posted @ 2018-09-16 21:34 含笑半步颠√ 阅读(339) 评论(0) 推荐(0) 编辑
摘要:进程与线程的标识 知识点一:进程id 与 线程ident xshell 知识点二:进程名 与 线程名 知识点三:获取当前线程/进程信息 提示!可以在任何一个进程或者线程里搞清楚自己是谁 进程与线程的其余相关操作 知识点一:等待结束 等待进程或线程结束 提示!进程和线程是一样的同学们课后自己尝试 可以 阅读全文
posted @ 2018-09-16 15:22 含笑半步颠√ 阅读(397) 评论(0) 推荐(0) 编辑
摘要:问题一: 计算机是如何执行程序指令的? 问题二: 计算机如何实现并发的? 轮询调度实现并发执行 程序1-8轮询完成,才再CPU上运行 问题三: 真正的并行需要依赖什么? 并行需要的核心条件 多进程实现并行 问题一: 什么是进程? 计算机程序是存储在磁盘上的文件。 只有把它们加载到内存中,并被操作系统 阅读全文
posted @ 2018-09-14 09:40 含笑半步颠√ 阅读(23466) 评论(2) 推荐(3) 编辑
摘要:首先,我们要明确2个问题: 普通套接字实现的服务端有什么缺陷吗? 有,一次只能服务一个客户端! 这种缺陷是如何造成的? accept阻塞:当没有套接字连接请求过来的时候会一直等待着 recv阻塞:当连接的这个客户端没有发数据过来的时候,也会一直等待着 当前I/O流 那么非阻塞套接字和普通套接字的区别 阅读全文
posted @ 2018-09-13 10:18 含笑半步颠√ 阅读(1071) 评论(0) 推荐(0) 编辑
摘要:socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的。 网络上两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,应用程序通过socket向网络中发出消息,或者接收消息。 socket是 阅读全文
posted @ 2018-09-11 09:55 含笑半步颠√ 阅读(1941) 评论(0) 推荐(0) 编辑
摘要:我们在使用rebotframework的时候,不只是能做UI自动化,接口自动化也是可以的。 那么这里就整理一下rebotframework_接口自动化的应用: 一、编写接口测试 由上图可知,该接口如下信息: 接口功能描述:预诊模版检索API,以及接口请求的地址 接口请求参数:详细介绍接口的参数名称, 阅读全文
posted @ 2018-09-10 08:24 含笑半步颠√ 阅读(4713) 评论(0) 推荐(0) 编辑
摘要:前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的。 刚开始我的内心是拒绝的,我想我用unittest也能完成自动化测试,干嘛要去学pytest呢?最近看到越来越多的招聘要求会pytest框架了,也有 阅读全文
posted @ 2018-09-09 18:12 含笑半步颠√ 阅读(214) 评论(0) 推荐(0) 编辑
摘要:用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 help帮助 1.查看pytest命令行参数,可以用pytest -h 或pytest --help查看 C: 阅读全文
posted @ 2018-09-09 18:10 含笑半步颠√ 阅读(182) 评论(1) 推荐(0) 编辑
摘要:前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻烦,所以很有必要学习如何在pycharm里面运行pytest用例 pycharm运行三种方式 1.以 阅读全文
posted @ 2018-09-09 18:08 含笑半步颠√ 阅读(588) 评论(0) 推荐(0) 编辑
摘要:前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest,也可以集成到Jenkins上展示高大上的报告界面。环境准备1.python3.62.windows环境3.pycharm4.pytest-allure-adaptor5. 阅读全文
posted @ 2018-09-09 17:58 含笑半步颠√ 阅读(463) 评论(0) 推荐(0) 编辑
摘要:前言 做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告。 conftest.py 1.失败截图可以写到conftest.py文件里,这样用例运行时,只要检测到用例实例,就调用截图的方法,并且把截图存到html报告上 2.用 阅读全文
posted @ 2018-09-09 17:22 含笑半步颠√ 阅读(961) 评论(0) 推荐(0) 编辑
摘要:前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3.6 pytest-html 1.github上源码地址【https://github.com/pytest-dev/pytest-html】 2.pip安装 $ pip install 阅读全文
posted @ 2018-09-09 17:05 含笑半步颠√ 阅读(576) 评论(0) 推荐(0) 编辑
摘要:上一篇讲到fixture通过scope参数控制setup级别,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。 这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作 scope="module" 1.fixtur 阅读全文
posted @ 2018-09-09 16:49 含笑半步颠√ 阅读(440) 评论(0) 推荐(0) 编辑
摘要:前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了。这就是本篇学习的目的,自定义测试用例的预置条件 fi 阅读全文
posted @ 2018-09-09 16:15 含笑半步颠√ 阅读(601) 评论(0) 推荐(0) 编辑
摘要:学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。 当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突然,可以只启动 阅读全文
posted @ 2018-09-09 15:21 含笑半步颠√ 阅读(348) 评论(1) 推荐(0) 编辑
摘要:睡了大半天,终于有时间整理下拖欠的MongoDB的封装啦。 首先我们先进行下数据库的连接: 那么这个时间, 我简单操作下: ps:本段代码为废话,可直接略过。test调试 这里进入正题吧。 先看下,mongoDB的方法都有哪些: 详细的封装代码如下: 到这关于mongoDB的知识,整理完毕。 另外关 阅读全文
posted @ 2018-09-08 22:24 含笑半步颠√ 阅读(451) 评论(0) 推荐(0) 编辑
摘要:一、认识MongoDB 基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案将数据存储为一个文档,文档类似与Json格式, MongoDB数据模型 MongoDB进入与退出 xshell操作 二、库、集合操作 库操作 显示所有库: 切换/创建数据库: 如果没有该数据 阅读全文
posted @ 2018-09-06 22:19 含笑半步颠√ 阅读(145) 评论(0) 推荐(1) 编辑
摘要:软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。 Python标准库自带日志模块,程序的日志功能直接调用标准库的日志模块即可通过日志,开发者可以清楚地了解发生了哪些事件,包括出现了哪些错误。 logging.level(message) >> 创建一条le 阅读全文
posted @ 2018-09-05 22:35 含笑半步颠√ 阅读(268) 评论(0) 推荐(1) 编辑
摘要:命令汇总: 先贴个完整代码: 运行结果: 详细步骤都写了,注释。 看起来简洁方便,似乎毫无难点,那么来愉快的谈一下使用中常见的坑 不管你要读什么,反正我一点数据也没有: 报错如上,原因十分明显,json没有内容可解析,一般直接从文件中进行排除,会发现读取的文本是空白,也就是说在写入数据的时候就已经发 阅读全文
posted @ 2018-09-04 17:18 含笑半步颠√ 阅读(2888) 评论(0) 推荐(0) 编辑
摘要:xshell 进入 虚拟环境 安装 redis 简单的封装下redis中的list方法: 结果: python_基础封装数据库方法 作者:含笑半步颠√ 博客链接:https://www.cnblogs.com/lixy-88428977 声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如 阅读全文
posted @ 2018-09-04 15:56 含笑半步颠√ 阅读(342) 评论(0) 推荐(0) 编辑
摘要:首先确定三目运算的使用条件, if只有两个才能用三目 只有 if:else: 先写个if else的小例子: if push == "lpush": self.conn.lpush(self.key, *list) elif push == "rpush": self.conn.lpush(self 阅读全文
posted @ 2018-09-04 15:52 含笑半步颠√ 阅读(196) 评论(0) 推荐(0) 编辑
摘要:xshell 进入 虚拟环境 安装 redis 简单的封装下redis中的Hash方法: 结果: python_基础封装数据库方法 作者:含笑半步颠√ 博客链接:https://www.cnblogs.com/lixy-88428977 声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如 阅读全文
posted @ 2018-09-03 22:40 含笑半步颠√ 阅读(274) 评论(0) 推荐(0) 编辑
摘要:在编写初期,遇见一个问题,发现怎么连接不上mysql,一直报错1045; 最后发现,只要下面的,连接写正确,不会出现这个问题, 只要你保证你的user、pwd是正确的, 基本连接是没有问题的。 那我在重复下基本操作命令: 这时,咱们在xshell_mysql 新建一些数据 新建表数据: 表内插入数据 阅读全文
posted @ 2018-09-03 21:51 含笑半步颠√ 阅读(1680) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示