精华内容
下载资源
问答
  • python的assert基本用法

    万次阅读 多人点赞 2018-07-23 16:53:55
    检查条件,不符合就终止程序 a=-1 #报错 assert a>0,"a超出范围" #正常运行 assert a<0

    检查条件,不符合就终止程序

    a=-1
    #报错
    assert a>0,"a超出范围"
    #正常运行
    assert a<0

    即如果我们希望a>0,那么前面的a=-1被检查出是不合法的

    展开全文
  • 讲完了 assert 的基本语法之后,本节通过一些实际应用例子,给大家演示一下 assert 在 中的用法,并明确 assert 使用场景。第一个例子,假设 C 语言中文网想做 VIP 促销活动,准备进行打折,现需要写一个 apply_...

    讲完了 assert 的基本语法之后,本节通过一些实际应用的例子,给大家演示一下 assert 在 中的用法,并明确 assert 的使用场景。

    第一个例子,假设 C 语言中文网想做 VIP 促销活动,准备进行打折,现需要写一个 apply_discount() 函数,要求是,向该函数传入原来的价格和折扣力度,该函数返回打折后的价格。

    apply_discount() 大致应该写成如下这样:

    #price 为原价,discount 为折扣力度 def apply_discount(price, discount): updated_price = price * (1 - discount) assert 0 <= updated_price <= price, '折扣价应在 0 和原价之间' return updated_price

    可以看到,在计算新价格的后面,添加了一个 assert 语句,用来检查折后价格,这里要求新折扣价格必须大于等于 0、小于等于原来的价格,否则就抛出异常。

    我们可以试着输入几组数,来验证一下这个功能:

    print(apply_discount(100,0.2)) print(apply_discount(100,1.1))

    运行结果为:

    80.0

    Traceback (most recent call last):

    File "C:UsersmengmaDesktopdemo.py", line 7, in

    print(apply_discount(100,1.1))

    File "C:UsersmengmaDesktopdemo.py", line 4, in apply_discount

    assert 0 <= updated_price <= price, '折扣价应在 0 和原价之间'

    AssertionError: 折扣价应在 0 和原价之间

    可以看到,当 discount 是 0.2 时,输出 80 没有问题,但是当 discount 为 1.1 时,程序便抛出下面 AssertionError 异常。

    这样一来,如果开发人员修改相关的代码,或者是加入新的功能,导致 discount 数值异常时,只要运行程序就很容易能发现问题,这也从侧面印证了前面多讲的,assert 的加入可以有效预防程序漏洞,提高程序的健壮性。

    另外,在实际工作中,assert 还有一些很常见的用法,例如:

    def func(input): assert isinstance(input, list), '输入内容必须是列表' # 下面的操作都是基于前提:input 必须是 list if len(input) == 1: ... elif len(input) == 2: ... else: ...

    上面代码中,func() 函数中的所有操作都基于输入必须是列表这个前提。所以很有必要在开头加一句 assert 的检查,防止程序出错。

    以上给大家介绍了 2 个有关 assert 的使用场景,很多读者可能觉得,assert 的作用和 if 语句非常接近,那么他们之间是否可以相互替代呢?

    要注意,前面讲过,assert 的检查是可以被关闭的,比如在命令行模式下运行 Python 程序时,加入 -O 选项就可以使程序中的 assert 失效。一旦 assert 失效,其包含的语句也就不会被执行。

    还是拿 C 语言中文网用户来说,只有 VIP 用户才可以阅读 VIP 文章,我们可以设计如下这个函数来模式判断用户身份的功能:

    def login_user_identity(user_id): #凭借用户 id 判断该用户是否为 VIP 用户 assert user_is_Vip(user_id) "用户必须是VIP用户,才能阅读VIP文章" read()

    此代码从代码功能角度上看,并没有问题,但在实际场景中,基本上没人会这么写,因为一旦 assert 失效,则就造成任何用户都可以阅读 VIP 文章,这显然是不合理的。

    所以正确的做法是,使用 if 条件语句替代 assert 语句进行相关的检查,并合理抛出异常:

    def login_user_identity(user_id): #凭借用户 id 判断该用户是否为 VIP 用户 if not user_is_Vip(user_id): raise Exception("用户必须是VIP用户,才能阅读VIP文章") read()

    总之,不能滥用 assert,很多情况下,程序中出现的不同情况都是意料之中的,需要用不同的方案去处理,有时用条件语句进行判断更为合适,而对于程序中可能出现的一些异常,要记得用 try except 语句处理(后续章节会做详细介绍)。

    展开全文
  • PythonassertTrue()是单元测试库函数,用于单元测试中以比较测试值与true。此函数将使用两个参数作为输入,并根据断言条件返回布尔值。如果测试值是true,则assertTrue()将返回true,否则返回false。用法: ...

    Python中的assertTrue()是单元测试库函数,用于单元测试中以比较测试值与true。此函数将使用两个参数作为输入,并根据断言条件返回布尔值。如果测试值是true,则assertTrue()将返回true,否则返回false。

    用法: assertTrue(testValue, message)

    参数:assertTrue()接受下面列出的两个参数,并附有说明:

    testValue:布尔类型的变量,用于按功能比较

    message:作为测试消息失败时显示的消息的字符串语句。

    下面列出了两个不同的示例,它们说明了给定assert函数的正面和负面测试案例:

    示例1:否定测试用例

    Python3

    # unit test case

    import unittest

    class TestStringMethods(unittest.TestCase):

    # test function

    def test_negative(self):

    testValue = False

    # error message in case if test case got failed

    message = "Test value is not true."

    # assertTrue() to check true of test value

    self.assertTrue( testValue, message)

    if __name__ == '__main__':

    unittest.main()

    输出:

    F

    ======================================================================

    FAIL:test_negative (__main__.TestStringMethods)

    ----------------------------------------------------------------------

    Traceback (most recent call last):

    File "p1.py", line 11, in test_negative

    self.assertTrue( testValue, message)

    AssertionError:False is not true:Test value is not true.

    ----------------------------------------------------------------------

    Ran 1 test in 0.000s

    FAILED (failures=1)

    示例2:正测试用例

    Python3

    # unit test case

    import unittest

    class TestStringMethods(unittest.TestCase):

    # test function

    def test_positive(self):

    testValue = True

    # error message in case if test case got failed

    message = "Test value is not true."

    # assertTrue() to check true of test value

    self.assertTrue( testValue, message)

    if __name__ == '__main__':

    unittest.main()

    输出:

    .

    ----------------------------------------------------------------------

    Ran 1 test in 0.000s

    OK

    展开全文
  • Python内部自带了一个单元测试模块——pyUnit,也就是我们说:unittest先介绍一下unittest的基本使用方法1. import unittest模块2. 定义一个继承 unittest.TestCase 测试用例类3. 定义 setUp 和 tearDown两个...

    Python内部自带了一个单元测试的模块——pyUnit,也就是我们说的:unittest

    先介绍一下unittest的基本使用方法

    1. import unittest模块

    2. 定义一个继承 unittest.TestCase 的测试用例类

    3. 定义 setUp 和 tearDown两个方法,tearDown的过程很重要,是为以后的TestCase留一个干净的测试环境。

    4. 定义测试用例,均要以test开头

    5. 一个测试用例只需要测试一个方面,测试的目的和测试内容要很明确。一般使用assertEqual、assertIn等断言方法去判断程序执行的结果和预期结果是否相符

    6. 调用 unittest.main() 开始跑测试用例

    7. 测试全部通过,不输出任何东西;若测试未通过,则会输出相应的错误提示。

    unittest执行顺序

    在pycharm里执行脚本的时候,发现了一个问题。本来在执行的时候,我还加了几步往config文件里写登录信息的步骤,但是在执行完成之后我发现,config文件里根本没有我想要写入的信息。然后我就加了一些打印信息,发现在执行这个脚本的时候,红框里的方法根本没有执行。后来查了一下,找到了原因,是pycharm里执行方式选择导致的。

    这是我想要在执行测试用例之前想要执行的步骤

    右上角可以选择执行方式

    主程序中先加载哪个方法,或者后加载哪个方法,在unittests运行的模式下,没有任何作用。在该模式运行下,主程序先执行哪个类,是按照这个类的名字字母以及数据排序的;先运行哪个方法,是按照某类中,方法的名字、数字排序的。

    这是普通模式

    而在普通模式下,就是按照写的执行顺序运行的。而unittest.main()方法会自动把所有的测试类加到测试集里,然后再加载到runner中去执行。

    下面是unittest中常用的assert语句

    assertEqual(a,b,[msg='测试失败时打印的信息']):若 a=b,则测试用例通过

    assertNotEqual(a,b,[msg='测试失败时打印的信息']):若a != b,则测试用例通过

    assertTrue(x,[msg='测试失败时打印的信息']):若x是True,则测试用例通过

    assertFalse(x,[msg='测试失败时打印的信息']):若x是False,则测试用例通过

    assertIs(a,b,[msg='测试失败时打印的信息']):若a是b,则测试用例通过

    assertNotIs(a,b,[msg='测试失败时打印的信息']):若a不是b,则测试用例通过

    assertIsNone(x,[msg='测试失败时打印的信息']):若x是None,则测试用例通过

    assertIsNotNone(x,[msg='测试失败时打印的信息']):若x不是None,则测试用例通过

    assertIn(a,b,[msg='测试失败时打印的信息']):若a在b中,则测试用例通过

    assertNotIn(a,b,[msg='测试失败时打印的信息']):若a不在b中,则测试用例通过

    assertIsInstance(a,b,[msg='测试失败时打印的信息']):若a是b的一个实例,则测试用例通过

    assertNotIsInstance(a,b,[msg='测试失败时打印的信息']):若a不是b的实例,则测试用例通过

    assertAlmostEqual(a, b):round(a-b, 7) == 0

    assertNotAlmostEqual(a, b):round(a-b, 7) != 0

    assertGreater(a, b):a > b

    assertGreaterEqual(a, b):a >= b

    assertLess(a, b):a < b

    assertLessEqual(a, b):a <= b

    assertRegexpMatches(s, re):regex.search(s)

    assertNotRegexpMatches(s, re):not regex.search(s)

    assertItemsEqual(a, b):sorted(a) == sorted(b) and works with unhashable objs

    assertDictContainsSubset(a, b):all the key/value pairs in a exist in b

    assertMultiLineEqual(a, b):strings

    assertSequenceEqual(a, b):sequences

    assertListEqual(a, b):lists

    assertTupleEqual(a, b):tuples

    assertSetEqual(a, b):sets or frozensets

    assertDictEqual(a, b):dicts

    展开全文
  • 内容目录(原文见公众号python宝)一、Python之单元测试以及断言assert二、单元测试的基本写法三、数据库测试四、基本assert断言方法一、Python之单元测试以及断言assert  所有程序开发过程一般包括以下几个阶段:...
  • assert [removed]表达式) 等价于: if not expression: raise AssertionError(arguments) 【实例1】 >>> assert True # 条件为 true 正常执行 >>> assert False # 条件为 false 触发异常 Trac
  • 内容目录(原文见公众号python宝)一、Python之单元测试以及断言assert二、单元测试的基本写法三、数据库测试四、基本assert断言方法一、Python之单元测试以及断言as...
  • 这一篇开始介绍我在自动化测试学习路线里提到的一些东西的学习方法和建议。首先从python基本语法开始。...2.《像计算机科学家一样思考python》这本书也值得一看,已经看过上面这本或者已经了解python的一...
  • Python assert断言)》一节中,已经对 assert 的基本用法做了简单介绍,assert 语句完整语法格式为: assert 条件表达式 [,描述信息] assert 语句作用是:当条件表达式值为真时,该语句什么也不做,程序正常...
  • 不知道应不应该说第二个参数,但是可以知道是这种用法在平常开发中很少用(甚至说除了在写测试时候基本上不会用) 抛出异常补充信息哈。 演示如下: a = 0 assert a == 1, 'a 为 0' input: Traceback ...
  • 讲完了 assert 的基本语法之后,本节通过一些实际应用例子,给大家演示一下 assertPython的用法,并明确 assert 使用场景。 第一个例子,假设 C 语言中文网想做 VIP 促销活动,准备进行打折,现需要写一...
  • pytest基本用法总结

    千次阅读 2020-08-18 19:30:02
    下载pytest包,python setup.py install 2、start 先创建一个简单用例: def func(x): return x + 1 def test_answer(): assert func(3) == 5 注意:用例名字必须是test开头,如果写在类里面则需要类以Test开头...
  • 里我们简单整理一下Python异常处理相关语句基础学习笔记,包括try...except与assert基本语句的用法讲解:
  • python3异常处理

    2017-06-06 23:28:27
    #使用异常处理,可以在程序因发生异常时继续往下执行。若没有异常处理,程序在发生异常时就会退出 1.异常处理的基本语法 ...Python中使用 try 语句来处理出现异常, try 语句中也可以有一个 else语句块
  • 基本上,它使assertEqual可以为您提供有关测试失败原因更多信息。 比较这两个测试:class DemoTest(unittest.TestCase):D1 = {'a': 1, 'b': 2, 'c': [1, 2]}D2 = {'a': 1, 'b': 2, 'c': [1]}def test_not_so_...
  • 建议19:断言绝对不是鸡肋在防御式编程中经常会用断言...在Java中断言使用assert关键字,其基本的用法如下:assert布尔表达式>assert布尔表达式>:错误信息>在布尔表达式为假时,抛出AssertionError错...
  • Java中assert断言介绍

    2017-07-24 16:14:34
    断言绝对不是鸡肋 ...在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当输入或错误环境而产生逻辑异常,断言在很多语言...在Java中断言使用assert关键字,其基本的用法如下
  • python断言使用方法

    2019-06-04 18:57:32
    一、python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言帮助。 二、基本的断言方法提供了...
  • 这章主要都是python的非常基础的知识,有很多BUG也都是非常非常有特点的需要注意的 基本上对于个人来讲没有特别多的新知识了 assert用法可以再熟悉一下,这个其实有的时候挺有用的,尤其是在学网课进行自我监督...
  • python简明教程.chm

    千次下载 热门讨论 2009-10-22 09:56:45
    Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可...
  • 掌握基本的条件,循环语句使用。 掌握assert断言break,continue,pass,等语句使用。 熟悉推导式的用法。 练习部分 课后思考题 龟兔赛跑游戏 1.条件结构 两种情况/分支 if expression: 代码1 else 代码2 ...
  • 1.掌握基本的条件、循环语句使用。 2.掌握assert断言break,continue,pass等语句使用。 3.熟悉推导式的用法。 1.条件语句 1.1if语句 if expression expr_true_suite if语句expr_true_suite代码块只有当if...
  • 目录 1.本节学习内容 2.理论部分笔记整理 2.1 if语句 2.2 if-else语句 ...掌握基本的条件,循环语句使用 掌握assert断言break,continue,pass等语句使用 熟悉推导式的用法 练习部分 课后思...
  • 掌握基本的条件,循环语句使用 掌握assert断言——break,continue,pass等语句使用 熟悉推导式的用法 (一)条件语句 if 语句 当条件表达式 expression 为真时执行 expr_true_suite 。 if expression: expr_...
  • java中断言

    2017-08-23 19:42:14
    在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当输入或错误环境而产生逻辑异常,断言在很多...在Java中断言使用assert关键字,其基本的用法如下:assert <布尔表达式> asser
  • java断言

    2017-07-24 10:02:22
    断言绝对不是鸡肋 在防御式编程中经常会用断言(Assertion)对参数和环境...在Java中断言使用assert关键字,其基本的用法如下: assert assert : 在布尔表达式为假时,抛出AssertionError错误,并附
  • 断言绝对不是鸡肋

    2017-11-15 14:38:00
    在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当输入...在Java中断言使用assert关键字,其基本的用法如下: assert <布尔表达式> assert <布尔表达式> : <错...
  • Java断言绝对不是鸡肋

    2016-05-31 06:36:55
    在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当输入或错误... 关键字,其基本的用法如下:  assert  assert : 在布尔表达式为假时,抛出AssertionError 错误,并附带了错误信

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

python的assert基本用法

python 订阅