栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python自动化测试框架之Pytest相关用法-断言(4)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python自动化测试框架之Pytest相关用法-断言(4)

1、pytest断言assert (1)基本使用

        assert断言的使用比较简单,只需assert + 逻辑判断语句即可

# coding: utf-8
import pytest


class Test_Case:

    def test_case1(self):
        assert 1 == 1


if __name__ == '__main__':
    pytest.main(['./test_demo1.py::Test_Case::test_case1', '-s'])

        输出结果

 

        此外,我们还可以使用其他的判断语句,例如

# coding: utf-8
import pytest


class Test_Case:

    def test_case1(self):
        a = 2
        b = 1
        assert a > b

    def test_case2(self):
        a = 'Hello World'
        b = 'ass'
        assert b in a

    def check_return(self):
        return True

    def test_case3(self):
        assert self.check_return()


if __name__ == '__main__':
    pytest.main(['./test_demo1.py::Test_Case', '-s'])

         此外,当用例断言不通过时,我们还可以加上后续的执行语句,例如打印相关信息提醒,或是调用其他方法

# coding: utf-8
import pytest


class Test_Case:

    def test_case1(self):
        a = 2
        b = 1
        assert a > b, '实际与预期不符:a 
2、多重断言(软断言)assume 

        虽然assert断言可以帮我们检查用例是否通过,但是当我们需要断言多条逻辑时,assert的不足就体现出来了,当assert断言不通过时,当前用例会被终止执行,后续的语句也不会再走下去。所以我们可以使用多重断言(软断言)--assume来解决这一问题。

        使用方法与assert相似,而assume的引入似乎存在问题,但是依然能够正常使用

         以下是基本使用方法

# coding: utf-8
import pytest


class Test_Case:

    def test_case1(self):
        pytest.assume(1 == 2, '断言错误!!!!实际与预期不符')
        print('继续执行...')
        pytest.assume(1 == 3, '断言错误!!!!实际与预期不符')


if __name__ == '__main__':
    pytest.main(['./test_demo1.py::Test_Case', '-s'])

输出结果

        由结果可以看到,即使第一条断言失败了,我们依然能够执行后面的语句,这也正是assume比assert灵活的原因。

3、场景示例

        接着我们带入UI自动化的场景来使用assume。

        如示例代码所示,对于图片断言可能存在偏差,存在的不定性因素比较多,可能页面下滑到一般,遮挡了部分图片,导致断言不通过。也可能是页面未刷新完全就断言。当我们不希望影响到其他断言的检查,所以使用assume比较合适。

        而如果url的检查有误,说明获取的配置出错,是比较硬性的错误,目标url的检查都不通过,那么其他断言也会失败,就没有执行下去的必要了,所以比较适合试用assert。

# coding: utf-8
import pytest
from selenium import webdriver


class Test_Case:
    def __init__(self):
        self.driver = webdriver.Chrome()

    def check_pic(self):
        """图片对比方法,存在偏差"""
        ratio = 0.6
        print('经图片对比分析,对比度为:', ratio)
        return ratio

    def check_url(self):
        """返回当前url"""
        return self.driver.current_url

    def test_case1(self):
        assert self.check_url() == 'http://www.xxx.com', 'url有误请检查配置'
        pytest.assume(self.check_pic() > 0.9, '图片对比未通过,需要执行刷新操作')


if __name__ == '__main__':
    pytest.main(['./test_demo1.py::Test_Case', '-s'])

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号