• 2021年最值得测试同学使用的python库


    title = "2021年最值得测试同学使用的python库"
    description = ""
    author = "乙醇"
    tags = []
    

    2021年不期而至了,我们不妨盘点一下2021年最值得测试同学使用的python库/工具吧。

    Validation

    jsonschema: An(other) implementation of JSON Schema for Python

    jsonschema可以用来进行json数据的校验。试想一下这样的场景,我们需要验证api返回的json字符串的正确性,但如果一个字段一个字段去校验效率自然是不高的,这时候jasonsschema就可以大展身手了。

    >>> from jsonschema import validate
    
    >>> # A sample schema, like what we'd get from json.load()
    >>> schema = {
    ...     "type" : "object",
    ...     "properties" : {
    ...         "price" : {"type" : "number"},
    ...         "name" : {"type" : "string"},
    ...     },
    ... }
    
    >>> # If no exception is raised by validate(), the instance is valid.
    >>> validate(instance={"name" : "Eggs", "price" : 34.99}, schema=schema)
    
    >>> validate(
    ...     instance={"name" : "Eggs", "price" : "Invalid"}, schema=schema,
    ... )                                   # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
        ...
    ValidationError: 'Invalid' is not of type 'number'
    

    我们可以自定义schema,如果api返回的结果满足schema定义的规则的话,那么用例就通过,否则失败,用例的编写效率和准确性都可以得到提升。

    项目地址:https://github.com/Julian/jsonschema

    算法

    algorithms:Minimal examples of data structures and algorithms in Python。

    库如其名,用python实现了各种常见算法,实现优雅,例子相对简单,适合学习。
    项目地址:https://github.com/keon/algorithms

    命令行工具

    howdoi:instant coding answers via the command line

    写代码的时候经常会不知道某个功能怎么实现或者代码报错需要去搜索一下解决方案,但每次打开浏览器搜索的话还是比较麻烦的,这时候howdoi就有用武之地了。

    howdoi是一个命令行工具,用法就是什么不会搜什么,比如我想用python读取文件,但不知道怎么写,那么你可以在命令行里这样做。

    $howdoi python read file
    with open('C:/path/numbers.txt') as f:
        lines = f.read().splitlines()
    

    没有任何的废话,直接给你答案。

    项目地址:https://github.com/gleitz/howdoi

    thefuck: Magnificent app which corrects your previous console command.

    人非圣贤,孰能无过,敲命令行的时候自然是很容易出错的,这时候你可能需要thefuck,这个工具可以帮你自动的修正错误命令并且运行,能较大的提升效率。

    项目地址: https://github.com/nvbn/thefuck

    db

    tinydb

    使用json进行持久化的简单数据库,提供了完整的持久化,查询等方案,数据库文件就是一个.json文件,可以用来实现配置存储,做一些小工具的开发等。

    >>> from tinydb import TinyDB, Query
    >>> db = TinyDB('/path/to/db.json')
    >>> db.insert({'int': 1, 'char': 'a'})
    >>> db.insert({'int': 1, 'char': 'b'})
    

    项目地址: https://github.com/msiemens/tinydb

    Deep Learning

    tensorflow

    最流行的机器学习框架,值得我们去学习和了解。

    项目地址: https://github.com/tensorflow/tensorflow

    installer

    pyinstaller:Freeze (package) Python programs into stand-alone executables

    很多同学写完python脚本以后都想把python脚本打包成exe文件或者是其他可执行文件,然后发给小伙伴们一键运行,这时候就可以试试pyinstall库,支持主流操作系统,推荐给有分发需求的同学。

    项目地址: https://github.com/pyinstaller/pyinstaller

    Downloader

    you-get

    命令行下载工具,支持油管和b站,特别是b站可以直接下载一个视频的所有part,强烈推荐。

    Environment Management

    关于环境管理就放在一起介绍。

    • pyenv - Simple Python version management. 我最常用的安装python的工具,支持多个python版本共存和切换,强烈推荐。
    • virtualenv - A tool to create isolated Python environments. 这个库可以创建一个虚拟环境,每个虚拟环境里pip安装的第三方依赖都是隔离的,可以完美解决不同的库依赖同一个库的不同版本的问题,也可以让site pakcage 干净整洁,适合有洁癖和强迫症的同学。

    GUI

    Gooey: Turn (almost) any Python command line program into a full GUI application with one line

    一个可以将命令行工具转换成gui的神奇工具,需要的代码量很少,适合做各种小工具,测试开发同学可以考虑一下。

    项目地址: https://github.com/chriskiehl/Gooey

    PySimpleGUI

    star很高的gui库,没用过,不好评论,不过看代码的描述性很强,推荐有兴趣的同学尝试一下。

    import PySimpleGUI as sg                        # Part 1 - The import
    
    # Define the window's contents
    layout = [  [sg.Text("What's your name?")],     # Part 2 - The Layout
                [sg.Input()],
                [sg.Button('Ok')] ]
    
    # Create the window
    window = sg.Window('Window Title', layout)      # Part 3 - Window Defintion
                                                    
    # Display and interact with the Window
    event, values = window.read()                   # Part 4 - Event loop or Window.read call
    
    # Do something with the information gathered
    print('Hello', values[0], "! Thanks for trying PySimpleGUI")
    
    # Finish up by removing from the screen
    window.close()                                  # Part 5 - Close the Window
    

    项目地址: https://github.com/PySimpleGUI/PySimpleGUI

    html/xml parser

    解析html和xml工具很多,我个人用过以下两个。

    http client

    requests A simple, yet elegant HTTP library.

    用起来最舒服也是最流行的python http client,简单优雅,居家常备。

    >>> import requests
    >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
    >>> r.status_code
    200
    >>> r.headers['content-type']
    'application/json; charset=utf8'
    >>> r.encoding
    'utf-8'
    >>> r.text
    '{"type":"User"...'
    >>> r.json()
    {'disk_usage': 368627, 'private_gists': 484, ...}
    

    项目地址: https://github.com/psf/requests

    ORM

    peewee a small, expressive orm -- supports postgresql, mysql and sqlite

    peewee的代码风格符合直觉,使用简单,学习成本相对较低,推荐测试开发同学使用。

    from peewee import *
    import datetime
    
    
    db = SqliteDatabase('my_database.db')
    
    class BaseModel(Model):
        class Meta:
            database = db
    
    class User(BaseModel):
        username = CharField(unique=True)
    
    class Tweet(BaseModel):
        user = ForeignKeyField(User, backref='tweets')
        message = TextField()
        created_date = DateTimeField(default=datetime.datetime.now)
        is_published = BooleanField(default=True)
    

    项目地址: https://github.com/coleifer/peewee

    安全测试

    fsociety Hacking Tools Pack – A Penetration Testing Framework

    提供一整套解决方案的安全测试框架。

    项目地址: https://github.com/Manisso/fsociety

    静态站点生成

    pelican Static site generator that supports Markdown and reST syntax. Powered by Python.

    python实现的静态博客生成器,流行度很高,适合有需求的同学。

    项目地址: https://github.com/getpelican/pelican

    测试库

    pytest https://docs.pytest.org/en/latest/

    最强大的python测试框架,特性丰富,功能强大,入门成本低,精通成本高,但基本上你需要的功能这个框架都能提供。

    unittest

    自带的测试框架,基本属于必修课了。

    fake2db: create custom test databases that are populated with fake data

    构建测试数据库以及测试数据的库。

    项目地址: https://github.com/emirozer/fake2db

    Faker is a Python package that generates fake data for you.

    最流行的造数据的库,很贴心的支持中文。

    from faker import Faker
    fake = Faker()
    
    fake.name()
    # 'Lucy Cechtelar'
    
    fake.address()
    # '426 Jordy Lodge
    #  Cartwrightshire, SC 88120-6700'
    

    项目地址: https://github.com/joke2k/faker

    爬虫

    requests-html Pythonic HTML Parsing for Humans

    用起来非常简单顺手的爬虫工具,简单的爬虫需求可以用这个。

    项目地址: https://github.com/psf/requests-html

    pyspider A Powerful Spider(Web Crawler) System in Python.

    非常流行的爬虫框架,适合复杂的爬虫项目。

    from pyspider.libs.base_handler import *
    
    
    class Handler(BaseHandler):
        crawl_config = {
        }
    
        @every(minutes=24 * 60)
        def on_start(self):
            self.crawl('http://scrapy.org/', callback=self.index_page)
    
        @config(age=10 * 24 * 60 * 60)
        def index_page(self, response):
            for each in response.doc('a[href^="http"]').items():
                self.crawl(each.attr.href, callback=self.detail_page)
    
        def detail_page(self, response):
            return {
                "url": response.url,
                "title": response.doc('title').text(),
            }
    

    项目地址: https://github.com/binux/pyspider

    web开发

  • 相关阅读:
    常见linux内核线程说明
    /proc/modules分析
    linux用户空间和内核空间(内核高端内存)_转
    二层交换机/三层交换机/路由器
    NAT--Network Address Translator
    curl命令使用
    (转)XML中必须进行转义的字符
    LFCP
    IPSP问题
    API和schema开发过程问题汇总
  • 原文地址:https://www.cnblogs.com/nbkhic/p/14025889.html
Copyright © 2020-2023  润新知