assert

10、pytest -- skip和xfail标记

浪子不回头ぞ 提交于 2020-01-29 06:25:39
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip 装饰器 1.2. pytest.skip 方法 1.3. @pytest.mark.skipif 装饰器 1.4. pytest.importorskip 方法 1.5. 跳过测试类 1.6. 跳过测试模块 1.7. 跳过指定文件或目录 1.8. 总结 2. 标记用例为预期失败的 2.1. 去使能 xfail 标记 3. 结合 pytest.param 方法 往期索引: https://www.cnblogs.com/luizyao/p/11771740.html 实际工作中,测试用例的执行可能会依赖于一些外部条件,例如:只能运行在某个特定的操作系统( Windows ),或者我们本身期望它们测试失败,例如:被某个已知的 Bug 所阻塞;如果我们能为这些用例提前打上标记,那么 pytest 就相应地预处理它们,并提供一个更加准确的测试报告; 在这种场景下,常用的标记有: skip :只有当某些条件得到满足时,才执行测试用例,否则跳过整个测试用例的执行;例如,在非 Windows 平台上跳过只支持 Windows 系统的用例; xfail :因为一个确切的原因,我们知道这个用例会失败;例如,对某个未实现的功能的测试,或者阻塞于某个已知 Bug 的测试; pytest 默认不显示 skip 和 xfail

Hackerrank Day 27: Testing

瘦欲@ 提交于 2020-01-29 05:11:46
def minimum_index(seq): if len(seq) == 0: raise ValueError("Cannot get the minimum value index from an empty sequence") min_idx = 0 for i in range(1, len(seq)): if seq[i] < seq[min_idx]: min_idx = i return min_idx class TestDataEmptyArray(object): @staticmethod def get_array(): # complete this function return [] class TestDataUniqueValues(object): data=[] for i in range(10): data.append(10-i) @staticmethod def get_array(): # complete this function return TestDataUniqueValues.data @staticmethod def get_expected_result(): # complete this function data = TestDataUniqueValues.get_array()######

关于JS正则的解释

萝らか妹 提交于 2020-01-29 04:35:05
正则 http://regexper.com 修饰符 g: 全局匹配 i: 匹配大小写 m 多行收缩 元字符 正则表达式有两种基本字符 元字符 原义文本字符 原义概念:表示代表本来文本的字符; 元字符:再正则表达式中有特殊意义的字符 .* + ? $ ^ | \ () {} [] \n \d \w \r\ Q \f \b \cX… [] 或 字符类 将一堆字符放在一个字符类中。匹配结果为一个字符,字符长度由两字决定 {} 量词 作用:决定匹配字符的长度。每个正则字符只匹配一个字符;量词决定结果字符长度0-n。 () . + * ? ^ $ \b \d \w \n \r \f 字符类[] 一般情况下,一个字符对应一个字符串 特殊:需要配【某类】字符 1:使用[]来构建简单的类 2: 所谓的类是指符合某些特性的对象;一个泛指;而不是特定某个字符 例如[abc] 匹配 a b c 中其中一类就可以 字符类取反 [^] 1:使用 ^ 创建反向类 必须在[^] 内 2:不属于某类 [^abc] 非 a b c 范围类 1:[a-z] 匹配 a-z 任意字符 闭意区间表示包含a z 本身 2:在 [] 组成的类可以连写 [a-zA-Z] 预定义类 作用:匹配常见的字符 。 [^\r\n] 任意字符 除了回车和换行的 \d [0-9] \s [’ ‘] \S [^’ '] \w [a-zA-Z0

Thinking in C++前几章笔记(1)

家住魔仙堡 提交于 2020-01-28 15:49:02
Thinking in C++前几章笔记 1、对象:把问题空间中的事物和它们在解空间中表示行为称为对象。 万物皆对象,程序就是一组对象,对象之间通过发送消息互相通知做什么。创建抽象数据类型是面向对象程序设计的基本思想。所以程序设计中,所做的工作就是创造新的数据类型。而面向对象程序设计的难题之一,是在问题空间中的元素和解空间的对象之间建立一对一的映射。 2、代码重用是面向对象程序设计语言的最大优点之一。重用一个类最简单的方法就是直接使用这个类的对象,我们常称为组合(has a)。而继承(基类和派生类)是is a的关系。 3、我们把处理派生类型如同处理其基类型的过程称为向上类型转换(upcasting)。 4、理想的类应当一目了然。运行进行可能是OOP最主要的好处。引入一个库,就是在向该语言引入一个新的类型。 5、极限编程(XP,eXtreme Programming):先写测试;结对编程(两个人)。 8、asm关键字 这是一种转义(escape)机制,允许在C++程序中写汇编代码。 9、调试技巧 1)使用预处理调试标记 #define DEBUG //... #ifdef BEBUG //debugging code here #endif//DEBUG 2)把变量和表达式转换成字符串 在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组。(原文:When

断言(ASSERT)

孤街浪徒 提交于 2020-01-28 15:16:05
我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。   在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由程序运行引起更大的错误) }   但是这样写的话,就会有无数个if语句,甚至会出现,一个if语句的括号从文件头到文件尾,并且大多数情况下,我们要进行验证的假设,只是属于偶然性事件,又或者我们仅仅想测试一下,一些最坏情况是否发生,所以这里有了assert().    assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行. 1 #include "assert.h" 2 void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。   在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG

10、pytest -- skip和xfail标记

喜欢而已 提交于 2020-01-28 13:13:13
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip 装饰器 1.2. pytest.skip 方法 1.3. @pytest.mark.skipif 装饰器 1.4. pytest.importorskip 方法 1.5. 跳过测试类 1.6. 跳过测试模块 1.7. 跳过指定文件或目录 1.8. 总结 2. 标记用例为预期失败的 2.1. 去使能 xfail 标记 3. 结合 pytest.param 方法 往期索引: https://www.cnblogs.com/luizyao/p/11771740.html 实际工作中,测试用例的执行可能会依赖于一些外部条件,例如:只能运行在某个特定的操作系统( Windows ),或者我们本身期望它们测试失败,例如:被某个已知的 Bug 所阻塞;如果我们能为这些用例提前打上标记,那么 pytest 就相应地预处理它们,并提供一个更加准确的测试报告; 在这种场景下,常用的标记有: skip :只有当某些条件得到满足时,才执行测试用例,否则跳过整个测试用例的执行;例如,在非 Windows 平台上跳过只支持 Windows 系统的用例; xfail :因为一个确切的原因,我们知道这个用例会失败;例如,对某个未实现的功能的测试,或者阻塞于某个已知 Bug 的测试; pytest 默认不显示 skip 和 xfail

断言assert

一笑奈何 提交于 2020-01-28 02:40:35
assert()在release中没有任何作用(转) 发布时间:2011-10-08 11:51:02 技术类别: 自由话题 最近在调试别人写的代码。被assert()狠狠的涮了一把。现在将涮我的代码片段摘录如下: else if( m_radarLevel > c_maxRadarLevel ) { //可以在预计正常情况下程序不会到达的地方放置断言 :assert false ASSERT( false ); m_radarLevel = c_maxRadarLevel; } 【注】c_maxRadarLevel是一个全局变量,出错前的值为16。 因为m_radarLevel 值得范围是0--32,所有当m_radarLevel > c_maxRadarLevel 时会执行这段代码 而我的程序恰巧是release版本的,所有这里的 ASSERT( false )就被忽略了,本来m_radarLevel 应该是大于16的,但是由于执行了这个代码段,最终m_radarLevel 的值不可能大于16。 由于ASSERT()函数在release版本上不起作用,导致想用assert()在release版本的程序中捕捉逻辑错误是不可能的。 在csdn上看到了一段对话,比较好,现摘录如下: 问: 1) assert 对Debug 版起作用, 对 Release 版不起作用. 可不可以这样理解

gradle属性声明的几种方式

喜欢而已 提交于 2020-01-27 12:02:12
1、使用ext扩展属性声明 //属性赋值方式 project . ext . myProp = 'myValue' // 闭包方式 // 扩展属性,自定义propertise,会挂载到project上 ext { someOtherProp = 123 } // 使用时可以省略命名空间 assert myProp == 'myValue' println project . someOtherProp ext . someOtherProp = 567 2、使用gradle.properties声明属性 gradle.properties放置在.gradle目录下或根目录下: exampleProp = myValue someOtherProp = 455 build.gradle代码: // 使用 gradle.properties中声明的属性 assert project . exampleProp == 'myValue' task printGradleProperty { doFirst { println "Second property: $someOtherProp" } } 3、使用-Pkey = value来在命令行调用时携带属性 这种方式可以结合gradle.properties一起使用,用来覆盖gradle.properties中声明的属性。

断言(ASSERT)的用法

只谈情不闲聊 提交于 2020-01-27 08:07:02
  我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。   在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由程序运行引起更大的错误) }   但是这样写的话,就会有无数个if语句,甚至会出现,一个if语句的括号从文件头到文件尾,并且大多数情况下,我们要进行验证的假设,只是属于偶然性事件,又或者我们仅仅想测试一下,一些最坏情况是否发生,所以这里有了assert().     assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行. 1 #include "assert.h" 2 void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。   在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG

python learning Regular Expression.py

纵饮孤独 提交于 2020-01-25 23:37:34
# 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 # 在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字 ''' '00\d'可以匹配'007',但无法匹配'00A'; '\d\d\d'可以匹配'010'; '\w\w\d'可以匹配'py3'; ''' # .可以匹配任意字符,所以: ''' 'py.'可以匹配'pyc'、'pyo'、'py!'等等。 ''' # 用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符: ''' 来看一个复杂的例子:\d{3}\s+\d{3,8}。 我们来从左到右解读一下: \d{3}表示匹配3个数字,例如'010'; \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等; \d{3,8}表示3-8个数字,例如'1234567'。 综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。 如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d