分享

python中playwright结合pytest执行用例的实现 / 张生荣

 wenxuefeng360 2022-07-05 发表于四川

目录
  • 安装pytest插件
  • 编写测试用例
  • 忽略 HTTPS 错误和设置自定义视口大小
  • 持久上下文

playwright结合Pytest为您的 Web 应用程序编写端到端的测试。

安装pytest插件

  1. C:\Users\lifeng01>pip install pytest-playwright
  2. Collecting pytest-playwright
  3. Using cached pytest_playwright-0.2.2-py3-none-any.whl (9.8 kB)
  4. Requirement already satisfied: pytest in d:\python\python37\lib\site-packages (from pytest-playwright) (6.2.5)
  5. Requirement already satisfied: playwright>=1.13 in d:\python\python37\lib\site-packages (from pytest-playwright) (1.17.0)
  6. Requirement already satisfied: python-slugify in d:\python\python37\lib\site-packages (from pytest-playwright) (5.0.2)
  7. Requirement already satisfied: pytest-base-url in d:\python\python37\lib\site-packages (from pytest-playwright) (1.4.2)
  8. Requirement already satisfied: typing-extensions in d:\python\python37\lib\site-packages (from playwright>=1.13->pytest-playwright) (3.7.4.3)
  9. Requirement already satisfied: pyee>=8.0.1 in d:\python\python37\lib\site-packages (from playwright>=1.13->pytest-playwright) (8.2.2)
  10. Requirement already satisfied: websockets>=8.1 in d:\python\python37\lib\site-packages (from playwright>=1.13->pytest-playwright) (9.1)
  11. Requirement already satisfied: greenlet>=1.0.0 in d:\python\python37\lib\site-packages (from playwright>=1.13->pytest-playwright) (1.0.0)
  12. Requirement already satisfied: atomicwrites>=1.0 in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (1.3.0)
  13. Requirement already satisfied: attrs>=19.2.0 in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (19.3.0)
  14. Requirement already satisfied: py>=1.8.2 in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (1.9.0)
  15. Requirement already satisfied: toml in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (0.10.0)
  16. Requirement already satisfied: colorama in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (0.4.3)
  17. Requirement already satisfied: pluggy<2.0,>=0.12 in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (0.13.1)
  18. Requirement already satisfied: packaging in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (20.9)
  19. Requirement already satisfied: importlib-metadata>=0.12 in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (1.7.0)
  20. Requirement already satisfied: iniconfig in d:\python\python37\lib\site-packages (from pytest->pytest-playwright) (1.0.1)
  21. Requirement already satisfied: requests>=2.9 in d:\python\python37\lib\site-packages (from pytest-base-url->pytest-playwright) (2.25.0)
  22. Requirement already satisfied: text-unidecode>=1.3 in d:\python\python37\lib\site-packages (from python-slugify->pytest-playwright) (1.3)
  23. Requirement already satisfied: zipp>=0.5 in d:\python\python37\lib\site-packages (from importlib-metadata>=0.12->pytest->pytest-playwright) (3.1.0)
  24. Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\python\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (1.26.2)
  25. Requirement already satisfied: certifi>=2017.4.17 in d:\python\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (2020.4.5.1)
  26. Requirement already satisfied: idna<3,>=2.5 in d:\python\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (2.9)
  27. Requirement already satisfied: chardet<4,>=3.0.2 in d:\python\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (3.0.4)
  28. Requirement already satisfied: pyparsing>=2.0.2 in d:\python\python37\lib\site-packages (from packaging->pytest->pytest-playwright) (2.4.7)
  29. Installing collected packages: pytest-playwright
  30. Successfully installed pytest-playwright-0.2.2

编写测试用例

  1. import pytest
  2. from playwright.sync_api import Page
  3.  
  4. def test_baidu_com(page: Page):
  5.  
  6. page.goto("https://www.baidu.com")
  7. # xpath定位输入框,输入文本内容
  8. page.fill('//*[@id="kw"]', "秦时明月")
  9. # css点位点击“百度一下”按钮
  10. page.click('#su')
  11. # 打印title名称
  12. print(page.title)
  13.  
  14. if __name__ == '__main__':
  15. pytest.main(["-v", "test_baidu_example.py"])

名词解释:

test_baidu_com(page: Page):自动完成配置类型 ( page是pytest_playwright插件提供的一个夹函数,page指定到类型为Page,Page是playwright库提供的一个类,page指定类型为Page就可以调用Page类中的一些列方法 )

命令行输入命令执行:

  1. PS F:\project_gitee\Test\playwrightProject\cases> pytest --browser chromium --video on
  2. ================================================================================== test session starts ==================================================================================
  3. platform win32 -- Python 3.7.7, pytest-6.2.5, py-1.9.0, pluggy-0.13.1
  4. rootdir: F:\project_gitee\Test\playwrightProject\cases
  5. plugins: allure-pytest-2.9.43, anyio-3.3.4, base-url-1.4.2, clarity-1.0.1, cov-2.8.1, emoji-0.2.0, forked-1.3.0, html-3.1.1, lazy-fixture-0.6.3, metadata-1.11.0, pikachu-0.1.0, playwrigh
  6. t-0.2.2, rerunfailures-9.1.1, xdist-2.2.1
  7. collected 1 item
  8.  
  9. test_baidu_example.py . [100%]
  10.  
  11. =================================================================================== 1 passed in 1.97s ===================================================================================

命令行常用基础命令:

  1. # 运行测试
  2. pytest
  3.  
  4. # 开启页面运行
  5. pytest --headed
  6.  
  7. # 指定浏览器运行
  8. pytest --browser firefox
  9.  
  10. # 开启页面运行并指定浏览器运行
  11. pytest --headed --browser firefox
  12.  
  13. # 指定两个浏览器运行,优先运行火狐再运行谷歌
  14. pytest --browser firefox --browser chromium
  15.  
  16. # 使用浏览器频道,支持谷歌浏览器(我的电脑其他浏览器是报错的)
  17. pytest --browser-channel chromium
  18.  
  19. # 用慢动作运行测试
  20. pytest --slowmo 100
  21.  
  22. # 指定谷歌浏览器,开启记录每次测试的轨迹(生成一个.zip包,存放在test-results文件夹中)
  23. pytest --browser chromium --tracing on(on:开;off:关)
  24.  
  25. # 指定谷歌浏览器,开启每次测试录制视频(生成一个.webm包,存放在test-results文件夹中)
  26. pytest --browser chromium --video on(on:开;off:关)
  27.  
  28. # 指定谷歌浏览器,开启每次测试后是否自动截屏(生成一个.png图片,存放在test-results文件夹中)
  29. pytest --browser chromium --screenshot on

通过浏览器跳过测试:

  1. import pytest
  2. from playwright.sync_api import Page
  3.  
  4. @pytest.mark.skip_browser("firefox")
  5. def test_baidu_com(page: Page):
  6.  
  7. page.goto("https://www.baidu.com")
  8. # xpath定位输入框,输入文本内容
  9. page.fill('//*[@id="kw"]', "秦时明月")
  10. # css点位点击“百度一下”按钮
  11. page.click('#su')
  12. # 打印title名称
  13. print(page.title)
  14.  
  15. if __name__ == '__main__':
  16. pytest.main(["-v", "test_baidu_example.py"])

在特定浏览器上运行:

  1. import pytest
  2. from playwright.sync_api import Page
  3.  
  4. @pytest.mark.only_browser("chromium")
  5. def test_baidu_com(page: Page):
  6.  
  7. page.goto("https://www.baidu.com")
  8. # xpath定位输入框,输入文本内容
  9. page.fill('//*[@id="kw"]', "秦时明月")
  10. # css点位点击“百度一下”按钮
  11. page.click('#su')
  12. # 打印title名称
  13. print(page.title)
  14.  
  15. if __name__ == '__main__':
  16. pytest.main(["-v", "test_baidu_example.py"])

忽略 HTTPS 错误和设置自定义视口大小

第一种是写在conftest.py中,然后直接运行测试用例:

  1. # conftest.py
  2.  
  3. import pytest
  4.  
  5. @pytest.fixture(scope="session")
  6. def browser_context_args(browser_context_args):
  7. return {
  8. **browser_context_args,
  9. "ignore_https_errors": True,
  10. }
  11.  
  12. @pytest.fixture(scope="session")
  13. def browser_context_args(browser_context_args):
  14. return {
  15. **browser_context_args,
  16. "viewport": {
  17. "width": 1920,
  18. "height": 1080,
  19. }
  20. }

测试用例写法如下(最好这样写,不然运行就报错,作者已采坑):

  1. import pytest
  2. from playwright.sync_api import Page
  3.  
  4. def test_example(page: Page):
  5. page.goto("http://www.baidu.com")
  6. assert page.title() == "百度一下,你就知道"
  7.  
  8. page.close()
  9.  
  10. if __name__ == '__main__':
  11. pytest.main(["-v", "test_example.py"])

命令行运行测试用例:

  1. PS F:\project_gitee\Test\playwrightProject\cases> pytest --headed --browser chromium
  2. ================================================================================== test session starts ==================================================================================
  3. platform win32 -- Python 3.7.7, pytest-6.2.5, py-1.9.0, pluggy-0.13.1
  4. rootdir: F:\project_gitee\Test\playwrightProject\cases
  5. plugins: allure-pytest-2.9.43, anyio-3.3.4, asyncio-0.16.0, base-url-1.4.2, clarity-1.0.1, cov-2.8.1, emoji-0.2.0, forked-1.3.0, html-3.1.1, lazy-fixture-0.6.3, metadata-1.11.0, pikachu-
  6. 0.1.0, playwright-0.2.2, rerunfailures-9.1.1, xdist-2.2.1
  7. collected 1 item
  8.  
  9. test_example.py . [100%]
  10.  
  11. =================================================================================== 1 passed in 2.39s ===================================================================================

第二种是直接在用例中增加指定参数即可:

  1. import pytest
  2. from playwright.sync_api import sync_playwright
  3.  
  4. def test_example():
  5. with sync_playwright() as p:
  6. browser = p.chromium.launch(headless=False)
  7. page = browser.new_context(
  8. ignore_https_errors=True,
  9. viewport={
  10. "width": 1920,
  11. "height": 1040,
  12. }
  13. )
  14. page = page.new_page()
  15. page.goto("http://www.baidu.com")
  16. assert page.title() == "百度一下,你就知道"
  17. browser.close()
  18.  
  19. if __name__ == '__main__':
  20. pytest.main(["-v", "test_example.py"])

名词解释:
p.chromium.launch(headless=False):headless=False是开启有页面运行(默认是True,也就是无头浏览器)

第三种是模拟手机浏览器

  1. # conftest.py
  2.  
  3. import pytest
  4.  
  5. @pytest.fixture(scope="session")
  6. def browser_context_args(browser_context_args, playwright):
  7. iphone_11 = playwright.devices['iPhone 11 Pro']
  8. return {
  9. **browser_context_args,
  10. **iphone_11,
  11. }

测试用例写法如下(最好这样写,不然运行就报错,作者已采坑):

  1. import pytest
  2. from playwright.sync_api import Page
  3.  
  4. def test_example(page: Page):
  5. page.goto("http://www.baidu.com")
  6. assert page.title() == "百度一下,你就知道"
  7.  
  8. page.close()
  9.  
  10. if __name__ == '__main__':
  11. pytest.main(["-v", "test_example.py"])

命令行运行测试用例:

  1. PS F:\project_gitee\Test\playwrightProject\cases> pytest --headed --browser chromium
  2. ================================================================================== test session starts ==================================================================================
  3. platform win32 -- Python 3.7.7, pytest-6.2.5, py-1.9.0, pluggy-0.13.1
  4. rootdir: F:\project_gitee\Test\playwrightProject\cases
  5. plugins: allure-pytest-2.9.43, anyio-3.3.4, asyncio-0.16.0, base-url-1.4.2, clarity-1.0.1, cov-2.8.1, emoji-0.2.0, forked-1.3.0, html-3.1.1, lazy-fixture-0.6.3, metadata-1.11.0, pikachu-
  6. 0.1.0, playwright-0.2.2, rerunfailures-9.1.1, xdist-2.2.1
  7. collected 1 item
  8.  
  9. test_example.py F [100%]
  10.  
  11. ======================================================================================= FAILURES ========================================================================================
  12. ________________________________________________________________________________ test_example[chromium] _________________________________________________________________________________
  13.  
  14. page = <Page url='https://m.baidu.com/?from=844b&vit=fps'>
  15.  
  16. def test_example(page: Page):
  17. page.goto("http://www.baidu.com")
  18. > assert page.title() == "百度一下,你就知道"
  19. E AssertionError: assert '百度一下' == '百度一下,你就知道'
  20. E - 百度一下,你就知道
  21. E + 百度一下
  22.  
  23. test_example.py:15: AssertionError
  24. ================================================================================ short test summary info ================================================================================
  25. FAILED test_example.py::test_example[chromium] - AssertionError: assert '百度一下' == '百度一下,你就知道'
  26. =================================================================================== 1 failed in 3.14s ===================================================================================

这里运行后,打开的web页面,是一个手机形状的页面,仿的是手机浏览器(代码中指定的是iPhone 11 Pro)

持久上下文

它的意思就是打开一个web页面,会在这个web页面开多个新标签页面去执行测试用例。

例如:我有两个测试用例需要执行,如果使用持久上下文,就会打开一个web页面,然后web页面的第一个标签页运行第一个测试用例,第二个标签页运行第二个测试用例,直到把所有测试用例运行完了,关闭整个web页面,结束。

当然,如果你没有使用持久上下文,那就是打开web页面执行第一个测试用例,执行完第一个测试用例关闭web页面,然后再打开web页面执行第二个测试用例,执行完第二个测试用例关闭web页面,结束。

  1. import pytest
  2. from playwright.sync_api import BrowserType
  3. from typing import Dict
  4.  
  5. @pytest.fixture(scope="session")
  6. def context(
  7. browser_type: BrowserType,
  8. browser_type_launch_args: Dict,
  9. browser_context_args: Dict
  10. ):
  11. context = browser_type.launch_persistent_context("./data", **{
  12. **browser_type_launch_args,
  13. **browser_context_args,
  14. "locale": "de-DE",
  15. })
  16.  
  17. yield context
  18.  
  19. context.close()

名词解释:

  • ./data用户数据目录的路径,它存储浏览器会话数据,如cookie和本地存储。
  • browser_type_launch_args如果没有设置值,返回的就是一个空字典;它里面的参数就是和p.chromium.launch()中的传参一致的,此处了解下,后面具体介绍。
  • browser_context_args如果没有设置值,返回的就是一个空字典;它里面的参数就和context = browser.new_context()中的传参一致的,此处了解下,后面具体介绍。
  • locale指定用户区域设置,例如' en-GB '、' de-DE '等。

命令行运行测试用例:

  1. PS F:\project_gitee\Test\playwrightProject\cases> pytest --headed --browser chromium
  2. ================================================================================== test session starts ==================================================================================
  3. platform win32 -- Python 3.7.7, pytest-6.2.5, py-1.9.0, pluggy-0.13.1
  4. rootdir: F:\project_gitee\Test\playwrightProject\cases
  5. plugins: allure-pytest-2.9.43, anyio-3.3.4, asyncio-0.16.0, base-url-1.4.2, clarity-1.0.1, cov-2.8.1, emoji-0.2.0, forked-1.3.0, html-3.1.1, lazy-fixture-0.6.3, metadata-1.11.0, pikachu-
  6. 0.1.0, playwright-0.2.2, rerunfailures-9.1.1, xdist-2.2.1
  7. collected 2 items
  8.  
  9. test_baidu_example.py . [ 50%]
  10. test_example.py . [100%]
  11.  
  12. =================================================================================== 2 passed in 3.12s ===================================================================================

必须知晓问题:

上述文章中的browser_type_launch_args和browser_context_args都是pytest_playwright插件提供的测试夹会话:
展示pytest_playwright插件部分源码:

  1. @pytest.fixture(scope="session")
  2. def browser_type_launch_args(pytestconfig: Any) -> Dict:
  3. launch_options = {}
  4. headed_option = pytestconfig.getoption("--headed")
  5. if headed_option:
  6. launch_options["headless"] = False
  7. browser_channel_option = pytestconfig.getoption("--browser-channel")
  8. if browser_channel_option:
  9. launch_options["channel"] = browser_channel_option
  10. slowmo_option = pytestconfig.getoption("--slowmo")
  11. if slowmo_option:
  12. launch_options["slow_mo"] = slowmo_option
  13. return launch_options
  14.  
  15. @pytest.fixture(scope="session")
  16. def browser_context_args(
  17. pytestconfig: Any,
  18. playwright: Playwright,
  19. device: Optional[str],
  20. ) -> Dict:
  21. context_args = {}
  22. if device:
  23. context_args.update(playwright.devices[device])
  24. base_url = pytestconfig.getoption("--base-url")
  25. if base_url:
  26. context_args["base_url"] = base_url
  27.  
  28. video_option = pytestconfig.getoption("--video")
  29. capture_video = video_option in ["on", "retain-on-failure"]
  30. if capture_video:
  31. context_args["record_video_dir"] = artifacts_folder.name
  32.  
  33. return context_args

 到此这篇关于python中playwright结合pytest执行用例的实现的文章就介绍到这了,更多相关playwright pytest执行用例内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-12-09

如何使用Playwright对Java API实现自动视觉测试

微软新的端到端浏览器自动化框架Playwright引起了轰动!仅在几个月前,我才试玩了Playwright,当时它是一个仅JavaScript的框架,当得知语言支持已经扩展到我心爱的Java以及Python和C#时,我感到非常惊喜. 借助额外的语言支持以及跨现代浏览器引擎Chromium,Firefox和WebKit执行的能力,这使Playwright与Selenium WebDriver处于同一类别,成为所有需要交叉测试的Web测试人员(不仅是JS)的可行测试解决方案浏览器测试功能,适用于复杂

python+playwright微软自动化工具的使用

它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft Edge 等,同时支持以无头模式.有头模式运行 playwright-python 提供了同步.异步的 API,可以结合 Pytest 测试框架使用,并且支持浏览器端的自动化脚本录制 项目地址:https://github.com/microsoft/playwright-python 安装playwright-python,执行命令:pip install playwright 安装成功之后,执行命令:p

Python开源自动化工具Playwright安装及介绍使用

目录 1.Playwright介绍 2.Playwright安装 3.实操演示 微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft Edge 等,同时支持以无头模式.有头模式运行,并提供了同步.异步的 API,可以结合 Pytest 测试框架 使用,并且支持浏览器端的自动化脚本录制. 项目地址:https://github.com/microsoft/playwright-python

微软开源最强Python自动化神器Playwright(不用写一行代码)

相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也需要一定的学习成本,对于一个纯小白来讲还是有些门槛的. 最近,微软开源了一个项目叫「playwright-python」,简直碉堡了!这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能. 可能你会觉得有点不可思议,但它就是这么厉害.下面我们一起看下这个神器. 1. Pl

python&nbsp;playwright&nbsp;自动等待和断言详解

目录 自动等待及元素执行方法 鼠标双击 获取元素焦点 鼠标悬停 鼠标点击 设置复选框取消或选中 取消已选中复选框取 输入参数 获取元素属性值 获取内部文本 获取内部HTML 获取文本内容 截图 填写文本并触发键盘事件 输入键盘操作 设置select下拉选项 调度事件 检查点(断言) 文字内容断言 内部文字断言 属性断言 复选框断言 js表达式断言 内部HTML断言 元素可见断言 启动状态断言 直接对比断言 总结 自动等待及元素执行方法 操作元素的一系列方法,只要调用了测试夹函数page,就能引出

python+selenium 脚本实现每天自动登记的思路详解

最近受疫情影响,学校要求每天必须进行健康登记,而我身处大山深处,身体健康,足不出户,奈何总是容易忘记,遂决定手撸一个自动登记的小程序,仅供学习交流之用,话不多说,直接上代码. 配置:Chrom python3.7 selenium库,webdriver等 基本思路,使用selenium模拟浏览器自动登录,需要解决验证码的提取,嵌套表单的提取,弹窗处理,异常处理. 为了防止大家用此网站测试,搞垮服务器,关键网址我已隐藏. import selenium.webdriver import time

Python中Selenium模块的使用详解

Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera等.这个工具的主要功能包括:测试浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建回归测试检验软件功能和用户需求.支持自动录制动作和自动生成 .

Python爬虫爬验证码实现功能详解

主要实现功能: - 登陆网页 - 动态等待网页加载 - 验证码下载 很早就有一个想法,就是自动按照脚本执行一个功能,节省大量的人力--个人比较懒.花了几天写了写,本着想完成验证码的识别,从根本上解决问题,只是难度太高,识别的准确率又太低,计划再次告一段落. 希望这次经历可以与大家进行分享和交流. Python打开浏览器 相比与自带的urllib2模块,操作比较麻烦,针对于一部分网页还需要对cookie进行保存,很不方便.于是,我这里使用的是Python2.7下的selenium模块进行网页上的操

Python中协程用法代码详解

本文研究的主要是python中协程的相关问题,具体介绍如下. Num01–>协程的定义 协程,又称微线程,纤程.英文名Coroutine. 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元. 为啥说他是一个执行单元,因为他自带CPU上下文.这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程. 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的. Num02–>协程和线程的差异 那么这个过程看起来和线程差不多.其实不然, 线程切换从系统层面远不止保存和恢复 CP

基于python中的TCP及UDP(详解)

python中是通过套接字即socket来实现UDP及TCP通信的.有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字. TCP通信模型 创建TCP服务器 伪代码: ss = socket() # 创建服务器套接字 ss.bind() # 套接字与地址绑定 ss.listen() # 监听连接 inf_loop: # 服务器无限循环 cs = ss.accept() # 接受客户端连接 comm_loop: # 通信循环 cs.recv()/cs.send() # 对话(接收/发

JSP 自动刷新的实例详解

JSP 自动刷新的实例详解 考虑一个网页被显示实时游戏得分或股市状况或货币兑换利率.对于所有这些类型的网页,你需要使用的刷新或重新加载按钮,您的浏览器定期刷新网页. JSP使这个工作变得简单,它提供一种机制,可以使网页在这样一种方式,它会在给定的时间间隔后自动刷新. 刷新网页的最简单的方法是使用方法setIntHeader()响应对象.下面是该方法的签名: public void setIntHeader(String header, int headerValue) 此方法发送回标题"刷新&q

python+requests+unittest API接口测试实例(详解)

我在网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,将用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空,整形,浮点,字符串,object,过短,超长,sql注入)这些情况,其中一种情况就是一条用例,同时要保证b,c的正确,确保a的测试不受b,c参数的错误影响 解决思路: 符合接口规范的参数可以手动去填写,或者准备在代码库中.那些不符合规范的参数(不传,为空,整形,浮点,字符串,object,过短,超长,

基于Python __dict__与dir()的区别详解

Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: __dict__是一个字典,键为属性名,值为属性值: dir()用来寻找一个对象的所有属性,包括__dict__中的属性,__dict__是dir()的子集: 并不是所有对象都拥有__dict__属性.许多内建类型就没有__dict__属性,如list,此时就需要用dir()来列出对象的所有属性. __di

基于Python的文件类型和字符串详解

1. Python的文件类型 1. 源代码--直接由Python解析 vi 1.py #!/usr/bin/python print 'hello world' 这里的1.py就是源代码 执行方式和shell脚本类似: chmod +x 后,./1.py Python 1.py 2. 字节代码 Python源码文件经编译后生成的扩展名为pyc的文件 编译方法: [root@t1 py]# cat 2.py #!/usr/bin/python import py_compile py_compil

Python中函数参数匹配模型详解

当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用 def f(*args): # 直接打印元组参数 print(args) print('-'*20) # 循环打印元组参数 [print(i) for i in args] ... # 传递一个参数 f(1) print('='*20) # 传递5个参数 f(1, 2, 3, 4, 5) 示例结果: (1,)   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 全屏 打印 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多