pytest最大的优点之一就是它非常灵活. 它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数. fixtures可以调用别的fixtures正是灵活性的体现之一. 一.Fixtures调用别的Fixtures 直接看一个简单示例: import pytest # Arrange @pytest.fixture def first_entry(): # 这是一个fixture函数,返回值:"a" return "a" #…
在深入了解fixture之前,让我们先看看什么是测试. 一.测试的构成 其实说白了,测试就是在特定的环境.特定的场景下.执行特定的行为,然后确认结果与期望的是否一致. 就拿最常见的登录来说,完成一次正常的登录场景,需要可用的测试环境,可以正常登录的账号和密码. 然后,用这个账号密码进行登录操作,结果登录成功,符合这次正常登录场景的预期结果,测试完成. 这样看来,通常就可以把测试分为4个步骤: Arrange Act Assert Cleanup Arrange,可以理解为 除了执行测试之外的任何…
既然fixtures是给执行测试做准备工作的,那么pytest如何知道哪些测试函数 或者 fixtures要用到哪一个fixtures呢? 说白了,就是fixtures的调用. 一.测试函数声明传参请求fixture 测试函数通过将fixture声明为参数来请求fixture. def test_my_fruit_in_basket(my_fruit, fruit_basket): # 这是一个测试函数 assert my_fruit in fruit_basket 参考上一章出现的示例,测试函…
目录 Cuda 9.2 CuDnn7.0 官方文档解读 准备工作(下载) 显卡驱动重装 CUDA安装 系统要求 处理之前安装的cuda文件 下载的deb安装过程 下载的runfile的安装过程 安装完以后的操作 验证安装 继续安装cuDNN 解决问题的思路 Trouble Shootting Tensorflow版本对应情况 Reference Later Cuda 9.2 CuDnn7.0 官方文档解读 本篇博客主要是解读官方的文档,预先的条件等,不涉及配置 如果想要安装的话,请看我下一篇博客…
当我们运行测试函数时,我们希望确保测试函数在运行结束后,可以自己清理掉对环境的影响. 这样的话,它们就不会干扰任何其他的测试函数,更不会日积月累的留下越来越多的测试数据. 用过unittest的朋友相信都知道teardown这个函数,做的是一样的事情,那么下面姑且就把这种"善后"工作的代码 叫做teardown代码吧. 而pytest中的fixture,也提供了这样一个非常有用的系统,我们可以在里面定义teardown代码. 这里可以使用2种方式来实现,分别是yield和addfina…
一.fixture有效性 fixture有效性,说白了就是fixture函数只有在它定义的使用范围内,才可以被请求到.比如,在类里面定义了一个fixture, 那么就只能是这个类中的测试函数才可以请求.但是,如果一个fixture定义的范围是整个模块,那么这个模块下的每个测试函数都可以去请求. 这里还有另一个影响fixture有效性的参数autouse=True,默认为False,等于True的话会在其他fixture之前先执行该fixture,后面有需要 另起一篇,这里简短带过. 另外,一个f…
在上一章中,文末留下了一个坑待填补,疑问是这样的: 目前从官方文档中看到的是 We have to be careful though, because pytest will run that finalizer once it's been added, even if that fixture raises an exception after adding the finalizer. 一旦添加了终结器,pytest便会执行. 但是,当我尝试在setup代码中进行抛错,终结器的代码却并没…
上一节讲到如何安装和使用第三方插件,用法很简单.接下来解读下如何自己开发pytest插件. 但是,由于一个插件包含一个或多个钩子函数开发而来,所以在具体开发插件之前还需要先学习hooks函数. 一.什么是 hooks 函数 简单来说,在 pytest 的代码中,预留出了一些函数供我们修改,以便来改变pytest工作方式,这些函数就是hooks函数,我们可以直接重写函数里的内容. 比如,在 pytest代码路径\Lib\site-packages\_pytest\hookspec.py中,可以看到…
在上一篇的 hooks 函数分享中,开发了一个本地插件示例,其实已经算是在编写插件了.今天继续跟着官方文档学习更多知识点. 一个插件包含一个或多个钩子函数,pytest 正是通过调用各种钩子组成的插件,实现了配置.搜集.运行和报告的所有方面的功能. 通常 pytes t中的插件有如下 3 类: 内置插件 : 从 pytest 内部的_pytest目录加载 外部插件 : 通过setuptools入口发现的模块 conftest.py: 在测试目录中自动发现的模块 第一个内置插件的路径在/Lib/s…
参照 FluentValidation 的官方文档写的例子,方便日后查看和使用. 原文:https://github.com/JeremySkinner/FluentValidation/wiki Home NuGet Packages Install-Package FluentValidation For ASP.NET MVC integration: Install-Package FluentValidation.MVC5 For ASP.NET Core: Install-Packa…
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文内容大部分是翻译和总结官方文档,可以到https://docs.spring.io/spring-boot/docs查看(此地址默认为最新版本的Spring Boot的文档,需要其他版本也可以在官网上查找) 此版本来自于https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/ 26.日志 简介: Spring Boot所有内部日志…
当pytest要执行一个测试函数,这个测试函数还请求了fixture函数,那么这时候pytest就要先确定fixture的执行顺序了. 影响因素有三: scope,就是fixture函数的作用范围,比如scope='class'. dependencies,可能会存在fixture请求了别的fixture,所以产生了依赖关系,也要考虑进去. autouse,如果autouse=True,那么在作用范围内,这个fixture是最先调用的. 所以,像fixture函数或测试函数的名称.定义的位置.定…
有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过的测试 用例中,给你加点红色的failed或者error. 举个例子,有些测试函数只能在windows上运行,那么换了个Linux平台就不可以,就需要跳过这个测试函数.再比如, 有些测试用例会有一些外部资源的依赖,像数据库,那么当数据库资源不可用的时候,也需要去跳过这个测试函数. 在pytest中提…
在之前的分享中,我们知道可以使用yield或者return关键字把fixture函数里的值传递给test函数. 这种方法很实用,比如我在fixture函数里向数据库里插入必要的测试数据,那我就可以把相关数据返回给test函数用来做相关断言查询等操作. 那如果我想把test函数(也就是测试用例)中的数据传给fixture函数使用,要如何实现呢? 直接先贴上一段示例代码: import pytest @pytest.fixture def fixt(request): marker = reques…
本节讨论安装和使用第三方插件.关于编写自己的插件,我们下一章继续. 一.pip 安装 就像安装一些其他第三方库一样,使用pip也可以很容易地安装第三方插件,pytest-NAME这是你要安装的插件名称: # 安装 pip install pytest-NAME #卸载 pip uninstall pytest-NAME 比如我这里安装一个pytest-xdist的插件: 第三方插件装完就可以直接用了,pytest会自动找到并集成它,不需要我们手动激活它. 二.查找可用插件 pytest的第三方插…
预备知识:External Storage Technical Information 摘要: "The WRITE_EXTERNAL_STORAGE permission must only grant write access to the primary external storage on a device. Apps must not be allowed to write to secondary external storage devices, except in their…
创建页面 在这个教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下.微信小程序中的每一个页面的[路径+页面名]都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页. 每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js.index.wxml.index.wxss.index.json..js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀…
使用 Python 可以编写多线程程序,注意,这并不是说程序能在多个 CPU 核上跑.如果你想这么做,可以看看关于 Python 并行计算的,比如官方 Wiki. Python 线程的主要应用场景是一些包含等待或 I/O 的任务,比如与远程 Web 服务器交互,多线程能够让 Python 在等待时执行其他代码,这提高了系统的交互性.例如下面这个爬虫程序: import Queue import threading import urllib2 # 被每个线程调用 def get_url(q, u…
Python 解释器 (CPython 3.7)内置有 66 个函数,这些函数在任何时刻都是可用的.此文是为了对这 66 个函数进行简单的梳理,便于以后可能用到它们时能想到. 1. abs(x) 返回一个数的绝对值.参数x可以是int.float或complex.如果是complex,则返回这个复数的大小(模). 2. all(iterable) 如果iterable的所有元素"是"True,才返回True,否则返回False.若iterable为空,也返回True.等价于: def…
在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这是我的理解,因为可视化的手段非常丰富,在面对大量的数据和模型,如何从中提取重要的关系,发现重要的数据趋势,并来指导生产和业务开展,这个才是体现数据价值的地方.可视化虽然很简单,但过程非常体现你对业务的理解和发现问题的思路,并不是一个拖动图表的过程.这一块内容非常多,以后有机会再根据实际案例来一步步掌…
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initializing Spark) 3.1 使用Spark Shell(Using the Shell) 4 弹性分布式数据集(RDDs) 4.1 并行集合(Parallelized Collections) 4.2 外部数据库(Externa…
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Templates 配置 例子 Velocity & FreeMarker 依赖 Context配置 -- 上下文配置 创建模板 高级配置 velocity.properties FreeMarker 绑定支持和form处理 bind marcos -- 绑定宏 simple binding -- 简单绑定 for…
1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotation    * 将测试信息添加到testng.xml文件或者build.xml中    * 运行TestNG 在欢迎页面上可以找到快速入门示例. 下面是这篇文档使用的概念: * suite由xml文件描述.它包…
一.前言 上一篇 <从现在开始,试着学会用官方文档去学习一个技术框架>提倡大家多去从官方文档学习技术,没有讲到具体的实践,本篇就拿一个案例具体的说一说,就是FreeMarker,选择这个框架没什么特别的含义,最近要用,就拿这个做个典型. 二.套路 上篇文章最后说到技术学习没有套路,无招胜有招,无招即是有招,解读一下实际上就是说 本身还是有些招式套路,但是要灵活运用,不要什么都往上套,应该忘掉固有的套路,让其化为你的一种本能,见招拆招.  下面就介绍一种常规学习套路给大家,如下图: 下面就根据上…
到目前为止,已经看了一百页.再次感慨下,如果想使用Spring,那可以看视频或者找例子,但如果想深入理解Spring,最好还是看官方文档. 原计划是把一些基本接口的功能.层次以及彼此的关系罗列一下.同时兼顾版本的演化,简述下相应功能的历史,最好是画一张图. 以BeanPostProcessor接口为例,当configuration metadata中有其实现的bean definition时,容器会在所有bean创建完成后执行其中的方法,但是会在@PostContruct之前. 而BeanPos…
根据ThinkPHP官方文档学习opensns框架 1.解读Application下各个Controller文件夹下的作用 控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller 控制器文件的命名方式是:类名+class.php(类文件后缀) namespace Weibo\Controller; ///这是系统的规范要求,表示当前类是weibo模块下的控制器类,与实际路径一致 use Think\Controller; //引入 Think\Controller 类库便于直…
原文链接 在本附录中,我们会讨论一些初级的Spring AOP接口,以及在Spring 1.2应用中所使用的AOP支持. 对于新的应用,我们推荐使用 Spring AOP 2.0来支持,在AOP章节有介绍.但在已有的项目中,或者阅读数据或者文章时,可能会遇到Spring AOP 1.2风格的示例.Spring 2.0完全兼容Spring 1.2,在本附录中所有的描述都是Spring 2.0所支持的. Spring中的切入点API 一起看一下Spring是如何处理关键切入点这个概念. 概念 Spr…
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [AutoMapper官方文档]DTO与Domin Model相互转换(下) 未完待续... 本篇目录: Flattening-复杂到简单 Projection-简单到复杂 Configuration Validation-配置验证 Lists and Array-集合和数组 Nested mapping…
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等).当前2D Toolkit版本为2.4. 这是一篇系列教程,全文共13节(官方文档为4章,不过为了每节有明确目的,我根据官方文档的标题拆成了13节),下面是本系列教程的所有链接: 2DToolkit官方文档中文版打地鼠教程(一):初始设置 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机…
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等).当前2D Toolkit版本为2.4. 这是一篇系列教程,全文共13节(官方文档为4章,不过为了每节有明确目的,我根据官方文档的标题拆成了13节),下面是本系列教程的所有链接: 2DToolkit官方文档中文版打地鼠教程(一):初始设置 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机…