169 lines
15 KiB
HTML
169 lines
15 KiB
HTML
|
||
|
||
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="ru" data-content_root="../">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>conftest — документация e-nms-qa-automation 0.1.0</title>
|
||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
|
||
|
||
|
||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
<script src="../_static/documentation_options.js?v=6ff560e8"></script>
|
||
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
<script src="../_static/translations.js?v=cd1d70c9"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Алфавитный указатель" href="../genindex.html" />
|
||
<link rel="search" title="Поиск" href="../search.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="../index.html" class="icon icon-home">
|
||
e-nms-qa-automation
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
||
<!-- Local TOC -->
|
||
<div class="local-toc"></div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../index.html">e-nms-qa-automation</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Навигация по страницам">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="index.html">Код модуля</a></li>
|
||
<li class="breadcrumb-item active">conftest</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<h1>Исходный код conftest</h1><div class="highlight"><pre>
|
||
<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">inspect</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">dotenv</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_dotenv</span>
|
||
|
||
<span class="n">load_dotenv</span><span class="p">()</span>
|
||
|
||
<span class="n">pytest_plugins</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'fixtures.pages'</span>
|
||
<span class="p">]</span>
|
||
|
||
<div class="viewcode-block" id="pytest_sessionfinish">
|
||
<a class="viewcode-back" href="../conftest.html#conftest.pytest_sessionfinish">[документация]</a>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">pytest_sessionfinish</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">exitstatus</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Генерация Markdown файлов с группировкой по классам"""</span>
|
||
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"--generate-md"</span><span class="p">):</span>
|
||
<span class="n">tests_by_file</span> <span class="o">=</span> <span class="p">{}</span>
|
||
|
||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">items</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'function'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">item</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">):</span>
|
||
<span class="k">continue</span>
|
||
|
||
<span class="n">file_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">fspath</span><span class="p">)</span>
|
||
<span class="n">file_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">file_path</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
|
||
|
||
<span class="k">if</span> <span class="n">file_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="p">:</span>
|
||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||
|
||
<span class="c1"># Группируем тесты по классам</span>
|
||
<span class="n">class_name</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__name__</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'cls'</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"Без класса"</span>
|
||
<span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">]:</span>
|
||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">][</span><span class="n">class_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="s1">'doc'</span><span class="p">:</span> <span class="n">inspect</span><span class="o">.</span><span class="n">cleandoc</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'cls'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__doc__</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s1">'tests'</span><span class="p">:</span> <span class="p">[]</span>
|
||
<span class="p">}</span>
|
||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">][</span><span class="n">class_name</span><span class="p">][</span><span class="s1">'tests'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Создаем директорию docs</span>
|
||
<span class="n">output_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"docs"</span><span class="p">)</span>
|
||
<span class="n">output_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Генерируем файлы</span>
|
||
<span class="k">for</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">classes</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||
<span class="n">md_content</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"# Документация тестов (</span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2">.py)</span><span class="se">\n\n</span><span class="s2">"</span>
|
||
|
||
<span class="k">for</span> <span class="n">class_name</span><span class="p">,</span> <span class="n">class_data</span> <span class="ow">in</span> <span class="n">classes</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||
<span class="k">if</span> <span class="n">class_name</span> <span class="o">!=</span> <span class="s2">"Без класса"</span><span class="p">:</span>
|
||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"## Класс: </span><span class="si">{</span><span class="n">class_name</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||
<span class="k">if</span> <span class="n">class_data</span><span class="p">[</span><span class="s1">'doc'</span><span class="p">]:</span>
|
||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">class_data</span><span class="p">[</span><span class="s1">'doc'</span><span class="p">]</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">"</span>
|
||
|
||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">class_data</span><span class="p">[</span><span class="s1">'tests'</span><span class="p">]:</span>
|
||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"### </span><span class="si">{</span><span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"**Маркеры:** </span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mark</span><span class="o">.</span><span class="n">name</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">mark</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">item</span><span class="o">.</span><span class="n">own_markers</span><span class="p">)</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">"</span>
|
||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"```python</span><span class="se">\n</span><span class="si">{</span><span class="n">inspect</span><span class="o">.</span><span class="n">cleandoc</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="s2">```</span><span class="se">\n\n</span><span class="s2">"</span>
|
||
|
||
<span class="n">output_file</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2">.md"</span>
|
||
<span class="n">output_file</span><span class="o">.</span><span class="n">write_text</span><span class="p">(</span><span class="n">md_content</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span></div>
|
||
|
||
|
||
<div class="viewcode-block" id="pytest_addoption">
|
||
<a class="viewcode-back" href="../conftest.html#conftest.pytest_addoption">[документация]</a>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">pytest_addoption</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span>
|
||
<span class="s2">"--generate-md"</span><span class="p">,</span>
|
||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
||
<span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||
<span class="n">help</span><span class="o">=</span><span class="s2">"Генерировать Markdown документацию с группировкой по классам"</span>
|
||
<span class="p">)</span></div>
|
||
|
||
</pre></div>
|
||
|
||
</div>
|
||
</div>
|
||
<footer>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Авторские права 2025, NPO KIS. </p>
|
||
</div>
|
||
|
||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |