zoukankan      html  css  js  c++  java
  • pytest自学第一期

    开始自学pytest了,我并不想看网上的各种自学教程和文档,要看咱们今天就看pytest的官方文档,不会英语咱们就用翻译,看不懂原理咱们就翻源码,就人肉试错

    学习一个技术,使用速成鸡的套路是一个办法,啃文档小火慢炖也是一个方法,我个人是打算了解pytest框架后集成seleium框架进行一个整体的自动化框架的搭建,一定会遇到一些需要我自己动手扩展才能实现的需求,这样的话速成鸡套路对未来来说肯定是会给我挖坑埋雷的,所以今天直接使用文档开淦

    第一章:安装与启动

    1.1:安装

     

     

    1.2:简单启动

    先看pytest文档的“HELLO WORLD”事例,简单的4行代码,及简单的运行命令

     

    通过这个事例,我们虽然能简单看懂了这个小Demo,但是同样我们也会有几个问题:

    1:我创建了同样的文件,但是不知道在哪里输入命令运行pytest?

    回答:pychram的这里

     

    但是我在cmd中使用同样命令无法运行,我不知道为什么,标红以后研究

     

     

     2:我运行时没有传入任何目录,pytest如何找到我要运行的文件?

    回答:首先要看你在哪个目录运行pytest命令,如果你只是运行了pytest这个命令,那么就会在你运行命令的目录中去寻找 所有以 test_*.py 和 *_test.py 命名的文件,所以该例子中你必须将测试py文件创建合适的命名。

    3:pytest以什么方式寻找文件,会不会影响我的命名,会不会有不安全,不严谨的情况存在导致出现奇怪的事情?

    回答:pytest的文件查找方式和方法查找方式遵循 Standard test discovery rules(标准测试发现原则)

    标准测试发现原则,想扩展可以自行阅读:https://docs.pytest.org/en/stable/goodpractices.html#test-discovery

    4:前面说过了pytest会查找全部符合名字的文件,那么pytest命令会运行多个文件?

    回答:会运行找到的全部符合规则的文件,后续会学习如何控制运行自己想要运行的文件

    5:该例子中有两个方法,pytest如何知道我要运行测试的方法?

    回答:同样使用该查找方法,查找我们要测试的方法

    6:为何该例子中,pytest 认定测试没有通过,并给出了 F 的测试结果,pytest是根据什么条件判断的?
    回答:F代表没有通过

    pytest通过 assert关键字进行测试结果的判定,assert 为true即通过,反之失败

    如果测试的方法中没有 assert关键字进行判断,那么这个方法的测试便会通过,当然也可以使用多个assert关键字进行多次测试如下图:

     

     

     

     通过这几个问题,对pytest有了一个比较基础的理解,接下来再继续慢慢学

    1.3 pytest判断异常

    前面提到了pytest可以使用assert关键字断言某一个结果的值是 True 还是 False 来判断测试结果

    我们是否能判断某一个方法是否触发了某个异常呢?肯定是可以的

     

    但是使用原来的assert断言模式其实也是可以实现的,只不过是麻烦一些,但是需要知道pytest提供了更方便的内置方法

     

     

     1.5 class中运行多个测试用例

    可以将多个测试用例放在一个class中,这样可以分用例查看各个用例的运行结果(所以不要在一个方法中使用多个assert的方法将创造多个用例,因为其中一个assert没过去其他的就不执行了,而且pytest提供了更简单的方法不是,如题)

     

     

     注意,使用这样方法时,class(类名) 依然要遵循那个查找原则,且 T要大写

    class test_c   找不到

    class abc_c 找不到

    class Ttest_c 找不到

    class Testcc 可以

    class Test_c 可以  

    class ss_Test 找不到

    class Test 可以

     

     

     1.6 为测试创建唯一的临时文件夹

     我不知道这个有什么用。。。

     

     

     

     

     

    第一期完,后续还有不懂的我了解后会自动补全,我肯定有错误地方的期望多多指出,继续学习

  • 相关阅读:
    hdu2191(多重背包)
    hdu3664(递推dp)
    hdu2955(变形01背包)
    hdu1712(分组背包)
    hdu1114(完全背包)
    hdu4004(二分)
    hdu2870(dp求最大子矩阵)
    POJ 1979 Red and Black(水题,递归)
    POJ 1922 Ride to School(贪心+模拟)
    POJ 1182 食物链(种类并查集)
  • 原文地址:https://www.cnblogs.com/xuchengfei/p/13712346.html
Copyright © 2011-2022 走看看