e-nms_qa_automation/docs/build/html/_modules/conftest.html

169 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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 &mdash; документация 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">&#39;fixtures.pages&#39;</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">&quot;&quot;&quot;Генерация Markdown файлов с группировкой по классам&quot;&quot;&quot;</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">&quot;--generate-md&quot;</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">&#39;function&#39;</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">&#39;cls&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;Без класса&quot;</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">&#39;doc&#39;</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">&#39;cls&#39;</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">&quot;&quot;</span><span class="p">,</span>
<span class="s1">&#39;tests&#39;</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">&#39;tests&#39;</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">&quot;docs&quot;</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">&quot;# Документация тестов (</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">&quot;</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">&quot;Без класса&quot;</span><span class="p">:</span>
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Класс: </span><span class="si">{</span><span class="n">class_name</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="k">if</span> <span class="n">class_data</span><span class="p">[</span><span class="s1">&#39;doc&#39;</span><span class="p">]:</span>
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">class_data</span><span class="p">[</span><span class="s1">&#39;doc&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</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">&#39;tests&#39;</span><span class="p">]:</span>
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;### </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">&quot;</span>
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;**Маркеры:** </span><span class="si">{</span><span class="s1">&#39;, &#39;</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">&quot;</span>
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;```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">&quot;</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">&quot;</span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2">.md&quot;</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">&#39;utf-8&#39;</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">&quot;--generate-md&quot;</span><span class="p">,</span>
<span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</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">&quot;Генерировать Markdown документацию с группировкой по классам&quot;</span>
<span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; Авторские права 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>