A

总觉的分析是偷懒,是作弊,所以这周要不还是做一道题再

选了Z字形变换那道,纸上划拉划拉之后第一版代码出来还算快,就是找下标位置关系然后顺着往里放字符或者不放

但是提交了几次都有问题
image.png
基本上都是输入异常处理的问题:

  • 第一次是空字符串
  • 第二次是预期单行在自己的解里面会搞出除数为0的异常
  • 第三次是输入字符串不足以填充预期行数的情况下,会导致我自己的解里面出来一个NPE

然后最后的时间和内存消耗…都算末流…所以严格说起来,没完…

R

决定自己看看pytest这东西了

pytest主页

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.
pytest框架致力于让编写简短的测试变得更容易,仍可扩展支持应用和库的复杂功能测试场景

简单示例执行部分,略

Due to pytest’s detailed assertion introspection, only plain assert statements are used. See Getting Started for more examples.
由于有pytest 的 detailed assertion instrospection的(加持),只需要使用原始的assert语句。看Getting Started这篇获取更多的例子

这一句还比较不太让人懂,主要是内容,啥算是detailed assertion instrospection呢?,python3确实自己有一个assert语句,确实和pytest这个呈现出来的效果不太一样,这个assertion introspection究竟是个怎么回事,似乎后面还得继续趟… Getting Started 只是…examples吧

Features

  • Detailed info on failing assert statements (no need to remember self.assert* names);
  • Auto-discovery of test modules and functions;
  • Modular fixtures for managing small or parametrized long-lived test resources;
  • Can run unittest (including trial) and nose test suites out of the box;
  • Python 3.5+ and PyPy 3;
  • Rich plugin architecture, with over 315+ external plugins and thriving community;

特性

  • 失败的assert语句输出详细的信息(无需记住各类self.assert* 名字)
  • 自动发现测试模块和函数
  • 为管理小型的,或者参数化的长声明周期的测试资源设计的模块儿化的治具
  • 开箱即用的方式运行unittest(包括试用版?)和nose的测试套件
  • Python 3.5+ 和 PyPy3
  • 丰富的插件的架构,超过315个扩展插件和兴旺的社区

这一部分别看短,但是内容其实挺多的

  • 顺着assert statement,了解到assert 后面如果跟了断言表达式之外的参数,那么他将不做assertion instrospection,试了一下感觉差别也就在具体断言失败细节信息那一行,整体的命令行输出并没有变,那如果instrospection就那么一丢丢,似乎也不算什么,进一步的又看了一遍关于assertion instrospection的解释,大概就是应该有一个地方集中处理了一下assert之类的做了一些重写操作,自省应该指的就是打印出assert statement自身那个语句
    • 不用记忆各类assert*名字,其实本来也不记,都用IDE提示…嗷,可以在没有IDE的环境里面尽情使用的意思吧
  • 所谓自动发现就是test前缀这个一致统一的命名规则吧
  • Modular fixtures是个产生了新的触动的词,这个东西让coding的人很有点工匠的感觉
    • 有人说就是setup teardown这些
    • 治具这个词,有些超脱这个行业的解析
    • 我相信它这里确实涵盖更多的内容,只是我还不懂
  • 然后就是和其他测试框架的兼容性了,头一次听说nose,因为不在这个圈儿里混吧,看起来也是在pytest阴影下过气了吧
  • 运行时兼容
  • 吹牛B的

    Documentation

    Please see Contents for full documentation, including installation, tutorials and PDF documents.

完整文档的地址

后面没啥技术层面的东西了

getstarted

光上面那点太水了,但是不想逐句扯了

pytest is a framework that makes building simple and scalable tests easy. Tests are expressive and readable—no boilerplate code required. Get started in minutes with a small unit test or complex functional test for your application or library.

最重要的是这句:Tests are expressive and readable—no boilerplate code required

安装

  • 没有venv,差评一个?

    hello world式样例

  • 和主页那个一样

  • 有一个Note,不忘黑了一下JUnit…这江湖

    运行多个测试

  • 提到会运行当前目录和子目录中所有前缀test_和后缀_test的py文件

  • 还有一个更全面的发现规则文档需要延伸阅读

    异常被抛出时的断言

  • 有一个叫raises的函数

  • 还同时演示了静默执行(-q,没那么多log,失败的详细信息还是都保留了)和执行指定的test_*py文件

    在一个类中组织多个测试

  • 强调了函数前面加test_被识别,类前面加Test被识别

  • 解释了一下输出
  • 这里面用了一个内置函数hasattr

    Grouping tests in classes can be beneficial for the following reasons:

    • Test organization
    • Sharing fixtures for tests only in that particular class
    • Applying marks at the class level and having them implicitly apply to all tests

强调将测试组织在一个类里面的可能的理由,能带来什么好处:

  • Test organization,就是 grouping的意思吧
  • 在这个特定的类里面共享fixtures
  • 在类的级别应用一些标记,暗含着应用到类中所有测试中

然后特别的举例子强调了下,一个类里面多个测试,分别会有一个类实例,这确实有点违反直觉,理由是如果用了同一个实例,会对测试和测试之间的隔离产生负面的影响,并导致不良的测试实践…不知道是不是又在影射谁…

接下来一节名称不宜直译,内容挺多的其实

为功能测试提供了方便的内置夹具能力

  • 这节引用较多,就不抄了,适合直接进去
  • 特别给了一个临时目录和文件的链接
    • 估计这块儿能力超强特别自豪,否则为啥拿这个为例单独列这个章节呢,原文标题也是这个临时目录文件相关
  • 关于那些link真的还得扩展阅读,形式非常多样
  • 最后还有这么一句话:Note that this command omits fixtures with leading _ unless the -v option is added.
    • 真相说我艹,何苦藏着呢,当彩蛋是么,文档还分等级么

      继续阅读

      非常非常值得看,键盘实在不行了,先告一段落

      T

      image.png
      按着这个,还得再截一个图,就是按了Ctrl+Alt+S
      image.png
      就是本来是点一下的,结果换成Drag就是往右边一拖到editor里面…不知道出于什么目的,估计是怕食指发抖吧,看UI文字,改成拖拽之后也可以用鼠标中键去除,没什么卵用

考虑到这么水,写一个工作部分相关的

second tip

DMS的敏感数据部分遮蔽导出的配置笔记…按说很不算啥玩意儿,只是真不知其他人怎么想得…

S

补(在 20200825),这个直接用另一篇充数

其他,不扩展说了,简单地最平淡的思路而已,太累了