pages自动生成 python_小程序 pages自动生成 - CSDN
精华内容
参与话题
  • 利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图 @Author:CSU张扬 @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com 参考:...

    利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图

    @Author:CSU张扬

    @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com

    参考https://pycallgraph.readthedocs.io/en/master/guide/index.html

    仅供个人学习,未经授权的情况下禁止转载和盈利行为

    1.下载并安装graphviz

    1. 下载地址https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi

    2. 安装(路径可任意选择)

    3. 配置环境变量,在Path中添加:

      例如我安装在F:\Program Files (x86),那么就添加环境变量F:\Program Files (x86)\Graphviz2.38\bin
      

    2.安装pycallgraph库

    cmd窗口命令行输入:pip install pycallgraph
    

    3.使用

    注意:你的程序 只有你的操作 使用了某个函数,才能显示在流图中。用户没有使用的功能则不会出现在流图中。

    在代码开头调用该库,如下:

    from pycallgraph import PyCallGraph
    from pycallgraph.output import GraphvizOutput
    from pycallgraph import Config
    from pycallgraph import GlobbingFilter
    

    主函数操作:

    (最终会保存在你的.py文件相同的文件夹里,名字为graph.png)

    def main():
    	# 你的主函数代码。
            
    if __name__ == "__main__":
        config = Config()
        # 关系图中包括(include)哪些函数名。
        #如果是某一类的函数,例如类gobang,则可以直接写'gobang.*',表示以gobang.开头的所有函数。(利用正则表达式)。
        config.trace_filter = GlobbingFilter(include=[
            'main',
            'draw_chessboard',
            'draw_chessman',
            'draw_chessboard_with_chessman',
            'choose_save',
            'choose_turn',
            'choose_mode',
            'choose_button',
            'save_chess',
            'load_chess',
            'play_chess',
            'pop_window',
            'tip',
            'get_score',
            'max_score',
            'win',
            'key_control'
        ])
        # 该段作用是关系图中不包括(exclude)哪些函数。(正则表达式规则)
        # config.trace_filter = GlobbingFilter(exclude=[
        #     'pycallgraph.*',
        #     '*.secret_function',
        #     'FileFinder.*',
        #     'ModuleLockManager.*',
        #     'SourceFilLoader.*'
        # ])
        graphviz = GraphvizOutput()
        graphviz.output_file = 'graph.png'
        with PyCallGraph(output=graphviz, config=config):
            main()
    

    产生的图片效果如下所示:
    在这里插入图片描述

    展开全文
  • 在写某个平台的自动化脚本时,笔者把全部的操作都封装到了两个类中,page.py和commonpage.py: page.py部分代码: class BasePage(object): ''' 页面基础类 ''' def __init__(self, driver): self....

    在写某个平台的自动化脚本时,笔者把全部的操作都封装到了两个类中,page.py和commonpage.py:

    page.py部分代码:
    class BasePage(object):
        '''
        页面基础类
        '''
        def __init__(self, driver):
            self.driver = driver
            
        def find_element(self,loc):
            return self.driver.find_element(*loc)
        
        #在输入框中输入文字
        def input_text(self,loc,text):
            self.find_element(loc).send_keys(text)
    
    commonpage.py部分代码:
    class CommonPage(BasePage): '''平台通用的功能''' #################################### #点击菜单 #big:第几个大菜单 #small:第几个小菜单 def click_menu(self,big): big_menu = (By.XPATH,"//ul/li[%s]/a/span"%big) self.click(big_menu) sleep(2) def click_small_menu(self,small,list): small_menu = (By.XPATH,"//ul/li[%s]/ul/li[2]"%small) self.click(small_menu) sleep(2)

    页面的操作只要调用这两个类(大部分其实在调用commonpage类),几乎能完成全部元素的封装、简化操作流程等。类似封装页面元素部分代码:

    from pages.page import BasePage
    from pages import commonpage,loginpage
    
    #活动编辑-报名表界面
    class act_applyPage(BasePage):
        
        #点击菜单
        def goto_activity_page(self):
            loginpage.LoginPage(self.driver).login_sys(username="abcd", passwd="password")
            com_page = commonpage.CommonPage(self.driver)
            com_page.click_menu(2,1)
        
        #点击某个tab
        def click_act_apply_tab(self):
            print u"点击 act_apply_tab"
            compage = commonpage.CommonPage(self.driver)
            compage.click_tab(5)

    能看出封装页面元素的代码很多都是类似的,只是参数不同。这就引发了笔者的思考:“能不能快捷生成代码?”

    上网搜索资料,大多都是使用Templat类,研究后发现达不到笔者想要结果(也有可能笔者还没掌握Templat类的使用,T-T)。

    最近刚好总结了python处理配置文件的知识,想到可以用在自动生成代码这里。

    大致思路是:section值可作为类名,option值可作为方法,在value中,用“,”隔开多个有用的参数,其中第一个参数是option的类型(这个类型决定用那一段代码);

    先遍历sections,在每个section下,遍历{option:value}键,分析value中的类型,把对应的代码写到文件中。

    先来看看配置文件:

    #活动
    #section
    [activity,frmActivityEdit]
    #{option:value}
    start_part:start,活动编辑,
    activity:menu,2,1
    add_button:addbtn,4,

    下面是生成脚本的部分代码:

    import ConfigParser
    import time
    
    conf = ConfigParser.RawConfigParser()
    #读取配置文件 conf.read(
    "section1.cfg") now = time.strftime("%Y-%m-%d",time.localtime(time.time())) sectionlist = conf.sections() #print sectionlist for list in sectionlist: (classname,frmedit) = list.split(',') #生成文件 pyfilepath = r'E:\\workspace\\%spage.py'%classname #写文件 pyfile = open(pyfilepath,'w') #读取每个section,遍历键,分析类型,写入代码 optionlist = conf.options(list) for list2 in optionlist:
    #分解value (optiontype,ranking,selector)
    = conf.get(list, list2).split(',')
    #需要生成的脚本 menu_code
    = '''\n\n def goto_%s_page(self): loginpage.LoginPage(self.driver).login_sys(username="abcd", passwd="password") com_page = commonpage.CommonPage(self.driver) com_page.click_menu(%s,%s)'''%(list2,ranking,selector)
    #判断类型,决定写入哪些脚本
    if optiontype == 'start': pyfile.writelines(start_code) elif optiontype == 'menu': pyfile.writelines(menu_code)
    else:... pyfile.close()

    接下来只要完善配置文件,大部分的界面类就能完成了。

     持续学习中,,,

    转载于:https://www.cnblogs.com/susan-su/p/8869399.html

    展开全文
  • 使用sphinx快速为你python注释生成API文档

    万次阅读 多人点赞 2018-11-06 20:33:18
    新版的Python3文档就是由sphinx生成的,并且它已成为Python项目首选的文档工具,同时它对C/C++项目也有很好的支持。更多详细特性请参考spinx官方文档,本篇博客主要介绍如何快速为你的Python注释生成API文档。 环境...

    sphinx简介

    sphinx是一种基于Python的文档工具,它可以令人轻松的撰写出清晰且优美的文档,由Georg Brandl在BSD许可证下开发。新版的Python3文档就是由sphinx生成的,并且它已成为Python项目首选的文档工具,同时它对C/C++项目也有很好的支持。更多详细特性请参考spinx官方文档本篇博客主要介绍如何快速为你的Python注释生成API文档

    环境

    • 需要安装python
    • 安装sphinx
    pip install sphinx
    

    实例

    1. 新建一个项目
      在这里插入图片描述
      目录结构如上图所示,doc目录使用来存放API文档,src目录是用来存放项目的源码
    2. src目录下的源码
    #coding=UTF-8
    class Demo1():
        """类的功能说明"""
    
        def add(self,a,b):
            """两个数字相加,并返回结果"""
            return a+b
    
        def google_style(arg1, arg2):
            """函数功能.
    
            函数功能说明.
    
            Args:
                arg1 (int): arg1的参数说明
                arg2 (str): arg2的参数说明
    
            Returns:
                bool: 返回值说明
    
            """
            return True
    
        def numpy_style(arg1, arg2):
            """函数功能.
    
            函数功能说明.
    
            Parameters
            ----------
            arg1 : int
                arg1的参数说明
            arg2 : str
                arg2的参数说明
    
            Returns
            -------
            bool
                返回值说明
    
            """
            return True
    

    demo1文件,主要使用了两种不同的Python注释分格。对于简单的例子和简单的函数以及文档说明,使用google style显得更为简洁,而对于比较复杂详细的文档说明numpy style更为流行。

    #coding=UTF-8
    
    def my_function(a, b):
        """函数功能说明
    
         >>> my_function(2, 3)
         6
         >>> my_function('a', 3)
         'aaa'
    
        """
        return a * b
    

    demo2文件的注释看起来像Python命令行输入的文档字符串,主要是用来检查命令输出是否匹配下行的内容,它允许开发人员在源码中嵌入真实的示例和函数的用法,还能确保代码被测试和工作。

    1. 使用sphinx建立API文档项目
    • 进入到doc目录下
    cd 项目路径/doc
    
    • 输入sphinx-quickstart命令,会输出选项
    > Root path for the documentation [.]: sphinx_demo
    > Separate source and build directories (y/n) [n]: y
    > Name prefix for templates and static dir [_]:
    > Project name: sphinx_demo
    > Author name(s): sphinx demo
    > Project version []: 1.0
    > Project release [1.0]:
    > Project language [en]: zh_CN
    > Source file suffix [.rst]:
    > Name of your master document (without suffix) [index]:
    > Do you want to use the epub builder (y/n) [n]:
    > autodoc: automatically insert docstrings from modules (y/n) [n]: y
    > doctest: automatically test code snippets in doctest blocks (y/n) [n]: y
    > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: y
    > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: y
    > coverage: checks for documentation coverage (y/n) [n]: y
    > imgmath: include math, rendered as PNG or SVG images (y/n) [n]: y
    > mathjax: include math, rendered in the browser by MathJax (y/n) [n]: y
    > ifconfig: conditional inclusion of content based on config values (y/n) [n]:
    > viewcode: include links to the source code of documented Python objects (y/n) [n]:
    > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:
    > Create Makefile? (y/n) [y]:
    > Create Windows command file? (y/n) [y]:
    

    因为我们需要从Python代码的注释中自动导出API文档,所以需要将autodoc: automatically insert docstrings from modules (y/n) [n]: y如果忘记设置,可以在conf.py中的extensions中添加'sphinx.ext.autodoc'。选项后面没有输入的,直接按回车键使用默认设置。选项后面有输入的,按照我的设置即可,如果不使用中文文档,可以在language配置中使用默认设置。设置完成之后,可以看到如下的目录结构

    在这里插入图片描述

    后面如果需要修改配置,选项在source/conf.py文件中修改即可。

    extensions = ['sphinx.ext.autodoc',
        'sphinx.ext.doctest',
        'sphinx.ext.intersphinx',
        'sphinx.ext.todo',
        'sphinx.ext.coverage',
        'sphinx.ext.mathjax']
    

    通过设置conf.py中的extensions,可以为sphinx添加额外的扩展,如果想要将html文档转换为PDF,只需要先安装扩展,然后再此处添加即可使用。由于我们的注释代码主要同时支持google style和numpy style,所以我们需要添加一个扩展来支持。

    sphinx.ext.napoleon
    
    1. 为源码生成html文件
    • 修改source/conf.py文件的19-21行
    import os
    import sys
    sys.path.insert(0, os.path.abspath('../../../src'))#指向src目录
    
    • 将命令行切换到doc目录下,执行以下命令
    sphinx-apidoc -o sphinx_demo/source ../src/
    >Creating file sphinx_demo/source\demo1.rst.
    >Creating file sphinx_demo/source\demo2.rst.
    >Creating file sphinx_demo/source\modules.rst.
    
    1. 清理文件
    cd sphinx_demo
    make clean
    >Removing everything under 'build'...
    
    1. 生成html文件
    make html
    

    请确保这一步没有输出errorexception

    1. 打开build/html/index.html
      在这里插入图片描述在这里插入图片描述8. 修改API的主题
      打开source/conf.py文件,找到html_theme = 'alabaster',修改即可,sphinx官方提供了几种主题可以进行选择,sphinx主题设置
      在这里插入图片描述

    相关错误解决办法

    • SyntaxError:Non-ASCII character '\xba' in file .....py

    在*.py文件的第一行添加#coding=UTF-8

    • Encoding error:'utf8' codec can't decode byte 0xc0 in position 44:invalid start byte

    确保*.py文件的编码格式为utf-8,通过notepad++可以进行查看,如果不是请修改为utf-8格式

    • 添加sphinx.ext.napoleon后报Exception occurred ....return translator['sphinx'].ugettext(message) KeyError:'sphinx'

    Sphinx1.3,napoleon扩展使用sphinx.ext.napoleon,Sphinx <= 1.2使用sphinxcontrib.napoleon

    展开全文
  • Sphinx: 发音: ...DJ音标发音: [sfiŋks] KK音标发音: [sfɪŋks] ...an ancient imaginary creature with a lion's body and a woman's head ...Mythology A figure in Egyptian myth having the bo...

    Sphinx:

    发音:

    DJ音标发音: [sfiŋks] KK音标发音: [sfɪŋks]

    单词本身释义:

    an ancient imaginary creature with a lion's body and a woman's head

    1. Mythology A figure in Egyptian myth having the body of a lion and the head of a man, ram, or hawk.
      【古埃及神话】 斯芬克斯:古代埃及神话中人面、公羊头或鹰头的狮身像
    2. Greek Mythology A winged creature having the head of a woman and the body of a lion, noted for killing those who could not answer its riddle.
      【希腊神话】 斯芬克斯:古代希腊神话中带翼的狮身女面怪物,专杀那些猜不出其谜语的人

    Sphinx在此处是一个可自动生成python项目api的工具,使用起来也比较简单,只需要在项目上进行简单的配置,即可生成项目的api文档(如下图)
    985935-20190121171613831-481850140.png

    步骤:

    1. 安装sphinx

    pip install sphinx

    2. 在项目的开发过程中

    2.1注意在注释中说清楚函数的用途描述,参数意义以及返回了什么,例如:(在pycharm中,在函数名的下一行输入3个引号后回车会自动生成函数描述的模板

    985935-20190121171614725-828242660.png

    2.2 在pycharm中设置文件头及函数注释的模板

    2.2.1
    • 文件头模板设置
      ** File->settings->Editor->File and Code Templates->Python Script
      985935-20190121171615033-1876640321.png

    • 函数知识模板设置
      ** File->Settings->Tools->Python integrated Tools->Docstring format,把该框选为Google或nunpy等
      因numpy对于多个returns的支持较好,所以选用了numpy
      985935-20190121171615399-388178504.png

    3. 配置sphinx

    3.1 在项目文档下新建一个文件夹,可命名为doc (路径 your_project_path/doc)

    3.2 进入doc文件夹下的命令行窗口,输入sphinx-quickstart进行配置 (文中一下的命令行,如无特殊说明,皆是在doc路径下执行)

    配置你的项目名,版本,等
    在此处的选项中,除了autodoc使用非默认的选项,选了y,其他的,皆使用默认项。配置项选错了也没关系,最后都可以在conf.py中更改

    sphinx-quickstart
    Welcome to the Sphinx 1.8.3 quickstart utility.
    
    Please enter values for the following settings (just press Enter to
    accept a default value, if one is given in brackets).
    
    Selected root path: .
    
    You have two options for placing the build directory for Sphinx output.
    Either, you use a directory "_build" within the root path, or you separate
    "source" and "build" directories within the root path.
    > Separate source and build directories (y/n) [n]: 
    
    Inside the root directory, two more directories will be created; "_templates"
    for custom HTML templates and "_static" for custom stylesheets and other static
    files. You can enter another prefix (such as ".") to replace the underscore.
    > Name prefix for templates and static dir [_]: 
    
    The project name will occur in several places in the built documentation.
    > Project name: test_sphinx
    > Author name(s): testname
    > Project release []: 0
    
    If the documents are to be written in a language other than English,
    you can select a language here by its language code. Sphinx will then
    translate text that it generates into that language.
    
    For a list of supported codes, see
    http://sphinx-doc.org/config.html#confval-language.
    > Project language [en]: 
    
    The file name suffix for source files. Commonly, this is either ".txt"
    or ".rst". Only files with this suffix are considered documents.
    > Source file suffix [.rst]: 
    
    One document is special in that it is considered the top node of the
    "contents tree", that is, it is the root of the hierarchical structure
    of the documents. Normally, this is "index", but if your "index"
    document is a custom template, you can also set this to another filename.
    > Name of your master document (without suffix) [index]: 
    Indicate which of the following Sphinx extensions should be enabled:
    > autodoc: automatically insert docstrings from modules (y/n) [n]: y
    > doctest: automatically test code snippets in doctest blocks (y/n) [n]: 
    > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: 
    > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: 
    > coverage: checks for documentation coverage (y/n) [n]: 
    > imgmath: include math, rendered as PNG or SVG images (y/n) [n]: 
    > mathjax: include math, rendered in the browser by MathJax (y/n) [n]: 
    > ifconfig: conditional inclusion of content based on config values (y/n) [n]: 
    > viewcode: include links to the source code of documented Python objects (y/n) [n]: 
    > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]: 
    
    A Makefile and a Windows command file can be generated for you so that you
    only have to run e.g. `make html' instead of invoking sphinx-build
    directly.
    > Create Makefile? (y/n) [y]: 
    > Create Windows command file? (y/n) [y]: 
    
    Creating file .\conf.py.
    Creating file .\index.rst.
    Creating file .\Makefile.
    Creating file .\make.bat.
    
    Finished: An initial directory structure has been created.
    
    You should now populate your master file .\index.rst and create other documentation
    source files. Use the Makefile to build the docs, like so:
       make builder
    where "builder" is one of the supported builders, e.g. html, latex or linkcheck.
    

    在doc文件夹下得到如下
    985935-20190121171615746-1946608741.png

    3.3 配置生成各个py文件的rst文件,在doc下生成一个rst文件夹

    sphinx-apidoc -o [生成rst的位置] [项目代码的位置] -f(强制重新覆盖写,否则会检测,如果有同名文件存在,会跳过不更新)
    sphinx-apidoc -o rst ../src

    985935-20190121171616192-768463217.png

    3.4 修改conf.py文件

    3.4.1 将conf.py中第15-17行的注释取消,并讲第17行的路径改为源代码的所在路径
    import os
    import sys
    sys.path.insert(0, os.path.abspath('../src'))
    3.4.2 如果源代码中引入了pandas,numpy等比较大的包,需要在conf.py中做相应的设置,否则会有import errpr之类的报错
    autodoc_mock_imports = ["pandas","pyecharts"]
    3.4.3 为了google的docstring换行的展示,更改
    extensions = ['sphinx.ext.autodoc','sphinx.ext.napoleon']

    3.5 生成html

    make html

    在doc下的子文件夹中会生成若干html,打开index.html即可查阅相关的函数API
    985935-20190121171616690-557728700.png

    转载于:https://www.cnblogs.com/combfish/p/10297987.html

    展开全文
  • 全篇包括三个章节,分别为:Python使用openpyxl操作excel、python使用PyPDF2和pdfplumber操作pdf、python使用python-docx操作word。本篇为第二章节。 全文已整理为pdf,可按文末指引获取。 本章目录 章节二 ...
  • 下载地址:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi 安装(路径可任意选择) 配置环境变量,在Path中添加graphviz的bin目录所在路径。 例如,我安装在F:\Prog...
  • 前言:选择这种方式仅仅是因为Github Pages免费,购买服务器当然是最佳选择&amp;amp;nbsp;&amp;amp;nbsp;为什么不选择Hexo?因为学习了廖雪峰python教程-实战篇,算是个小总结 目前流行的搭建博客的方式有3种...
  • 如果你想创建一个自定义网站或博客,有很多选择。许多提供商可以托管你的网站并为你完成大部分工作。(WordPress 是一个非常受欢迎的选项。)但是使用托管方式,你会失去一些灵活性。作为一名软件开发人员,我更喜欢...
  • http://stackoverflow.com/questions/6201302/how-to-have-automated-headers-for-python-filestemplate: /******************************************************************* * @file * * @date * @a
  • 使用 Flask-Docs 自动生成 Api 文档

    千次阅读 2019-02-23 14:30:01
    影响我写文档的原因可能是代码和文档分离,有时候写完代码会忘记补文档,而且不能及时查看,... Flask Api 文档自动生成插件 特性 根据代码注释自动生成文档 支持 Flask-RESTful 支持离线 markdow...
  • Python自动部署码云

    2020-04-13 21:00:26
    Python自动部署码云: 1:大概思路: 其实还是打开浏览器登录,只不过不用你自己再一步一步登录部署干啥。python代替你完成了这个过程。我用的谷歌浏览器,谷歌真香,用的人都说爽。 2:下载chromedriver.exe文件: ...
  • 最近接触一个项目需要根据数据自动生成持股关系较为复杂的股权关系图,之所以说复杂主要体现在股权层级多,还有一些特殊持股方式,比如一个子公司在集团内有多家公司持股,还有相互持股等情况,这些情况用VIsio等...
  • 一个python自动化脚本,读取csv中的url并保存每一个输入值为type,输出纪录有type的csv
  • 利用Github Pages展示自己的项目 写了个小项目,想要分享出去,一直在用Github管理项目,了解到Github还有Github Pages功能,然后惊喜的发现Github pages可以搭建博客或者托管网页,比什么买域名,部署到什么阿里...
  • python文档自动翻译

    千次阅读 2019-01-09 17:30:42
    python文档自动翻译 关键方法 提取文档内容 读取TXT文档 txt文档的读取很简单,直接用python自带的open()方法就好,代码如下所示: # 读取TXT文档 def read_txt(path): '''实现TXT文档的读取...
  • 本文讲的是来写一个 Python 说明文档生成器吧, 我一开始学习 Python 的时候,我最喜欢的一件事就是坐在编译器前,使用内置的help函数检查类和方法,然后决定我接下来要怎么写。这个函数会引入一个对象并检查其...
  • ——————·今天距2021年258天·——————这是ITester软件测试小栈第113次推文在上一篇Python接口自动化测试系列文章:Python接口自动化之cookie、sess...
  • python 自动批改 PDF 作业

    千次阅读 2020-05-03 10:20:25
    背景: 去年担任了一门课的助教,课程比较麻烦,每个学生需要提交四分实验报告,模板都是一样的。本以为助教会轻轻松松,结果我们需要批改每个学生的PDF报告,当时着急在学校系统上成绩,所以都是大致浏览一下报告...
  • python+appium的UI自动化框架的分享

    万次阅读 多人点赞 2019-06-14 18:02:13
    去年以来一直在看appium相关知识,正好公司也有安卓系统的项目,所以自上个月开始就着手推动该项目的功能自动化测试。 之所以做这个自动化主要原因还是想减轻手工测试压力,部分功能模块交给自动化测试来做回归测试...
  • 其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的;所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架。  项目的地址:...
1 2 3 4 5 ... 20
收藏数 8,666
精华内容 3,466
关键字:

pages自动生成 python