I stumbled upon this article and thought that maybe some of those could be used 
by default with Easybuild. Like the instafail, timeout (Pytorch I’m looking at 
you), and the parallel ones. What do you think?

https://towardsdatascience.com/pytest-plugins-to-love-%EF%B8%8F-9c71635fbe22

Pytest Plugins to Love ❤️
My top 5 and honorable 50 out of 700+ plugins to get nicer output and faster 
execution
<https://martinthoma.medium.com/?source=post_page-----9c71635fbe22-------------------------------->

Martin Thoma

You have 2 free member-only stories left this month.

[https://miro.medium.com/max/3186/1*dK-I-F06_yZgYxBYnNeyVQ.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/3186/1*dK-I-F06_yZgYxBYnNeyVQ.png"; 
width="1593" height="481" 
srcSet="https://miro.medium.com/max/552/1*dK-I-F06_yZgYxBYnNeyVQ.png 276w, 
https://miro.medium.com/max/1104/1*dK-I-F06_yZgYxBYnNeyVQ.png 552w, 
https://miro.medium.com/max/1280/1*dK-I-F06_yZgYxBYnNeyVQ.png 640w, 
https://miro.medium.com/max/1456/1*dK-I-F06_yZgYxBYnNeyVQ.png 728w, 
https://miro.medium.com/max/1632/1*dK-I-F06_yZgYxBYnNeyVQ.png 816w, 
https://miro.medium.com/max/1808/1*dK-I-F06_yZgYxBYnNeyVQ.png 904w, 
https://miro.medium.com/max/1984/1*dK-I-F06_yZgYxBYnNeyVQ.png 992w, 
https://miro.medium.com/max/2160/1*dK-I-F06_yZgYxBYnNeyVQ.png 1080w, 
https://miro.medium.com/max/2700/1*dK-I-F06_yZgYxBYnNeyVQ.png 1350w, 
https://miro.medium.com/max/3186/1*dK-I-F06_yZgYxBYnNeyVQ.png 1593w" 
sizes="1593px" role="presentation"/&gt;
Plugins can modify and extend a lot of aspects of pylint, including how the 
output is done. This screenshot of a pytest run with pytest-sugar was taken by 
Martin Thoma.

Pytest is extensible and has plenty of plugins. You don’t need to use any of 
them, but you might find some very useful. I love this because you have an easy 
time to get started with unit 
testing<https://medium.com/swlh/unit-testing-in-python-basics-21a9a57418a0>, 
while still finding amazing stuff when you’re more experienced 🤩

In this article, I’ll show you examples of plugins I use and the plugins I 
found while writing this article. You might want to cover the basics of unit 
testing<https://medium.com/swlh/unit-testing-in-python-basics-21a9a57418a0> 
first or refresh testing details like 
fixtures<https://medium.com/python-in-plain-english/unit-testing-in-python-structure-57acd51da923>.

How can I add a plugin?

All plugins presented in this article can be installed via pip . Most of them 
are then already active. For example, when you install pytest-sugar via

pip install pytest-sugar

You can just execute pytest and the plugin will automatically work. Others need 
to be used more directly. For example, after installing pytest-timeout you need 
to specify the timeout parameter you want to use:

pytest --timeout=1

Don’t worry, I will explain those two plugins later 🙂

How many Pytest plugins exist?

Searching on pypi.org for the trove classifier Framework :: Pytest , I found 
668 packages. A stunning 1053 packages have “pytest” in the name. 461 packages 
have both, the name and the trove classifier.

I went through over 700 pytest-plugins for this article. I’ve jumped over 
plugins that consider themselves to be in planning, pre-alpha, or alpha stage. 
I’ve also skipped packages where I’ve seen a TODO in the readme or if the 
package had less than 10 stars on GitHub.

The packages I’ve found make pytest sparkle ✨, improve the speed 🏎, are 
specialized to specific packages, or just unique in their behavior ❄️

Last but not least, there are some plugins where I’m not sure if they are 
awesome or if they are a bad idea. Let’s jump right into it and have a look 
yourself!

Side note: Maybe you remember my side note on typo 
squatting</static-code-analysis-for-python-bdce10b8d287#9026>? I found a 
fixable issue on PyPI<https://github.com/pypa/warehouse/issues/8462> while 
writing this article, hopefully improving security for the community🎉

The shiny ones
[https://miro.medium.com/max/10010/0*OpomvR1ltJczEJe1]&lt;img alt="" class="ep 
fd ez jh v" src="https://miro.medium.com/max/10010/0*OpomvR1ltJczEJe1"; 
width="5005" height="3417" 
srcSet="https://miro.medium.com/max/552/0*OpomvR1ltJczEJe1 276w, 
https://miro.medium.com/max/1104/0*OpomvR1ltJczEJe1 552w, 
https://miro.medium.com/max/1280/0*OpomvR1ltJczEJe1 640w, 
https://miro.medium.com/max/1400/0*OpomvR1ltJczEJe1 700w" sizes="700px" 
role="presentation"/&gt;
Photo by Jeremy 
Thomas<https://unsplash.com/@jeremythomasphoto?utm_source=medium&utm_medium=referral>
 on Unsplash<https://unsplash.com?utm_source=medium&utm_medium=referral>

The default output of pytest is already good, but some plugins make it amazing. 
pytest-sugar<https://github.com/Teemu/pytest-sugar> is one of those plugins❤

[https://miro.medium.com/max/3110/1*q62Md6QW-AnMkguTUtNJQQ.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/3110/1*q62Md6QW-AnMkguTUtNJQQ.png"; 
width="1555" height="393" 
srcSet="https://miro.medium.com/max/552/1*q62Md6QW-AnMkguTUtNJQQ.png 276w, 
https://miro.medium.com/max/1104/1*q62Md6QW-AnMkguTUtNJQQ.png 552w, 
https://miro.medium.com/max/1280/1*q62Md6QW-AnMkguTUtNJQQ.png 640w, 
https://miro.medium.com/max/1456/1*q62Md6QW-AnMkguTUtNJQQ.png 728w, 
https://miro.medium.com/max/1632/1*q62Md6QW-AnMkguTUtNJQQ.png 816w, 
https://miro.medium.com/max/1808/1*q62Md6QW-AnMkguTUtNJQQ.png 904w, 
https://miro.medium.com/max/1984/1*q62Md6QW-AnMkguTUtNJQQ.png 992w, 
https://miro.medium.com/max/2160/1*q62Md6QW-AnMkguTUtNJQQ.png 1080w, 
https://miro.medium.com/max/2700/1*q62Md6QW-AnMkguTUtNJQQ.png 1350w, 
https://miro.medium.com/max/3110/1*q62Md6QW-AnMkguTUtNJQQ.png 1555w" 
sizes="1555px" role="presentation"/&gt;
Pytest sugar changes the dots to checkmarks and the percentage to a bar. Image 
by Martin Thoma.

If those dots or checkmarks are too decent for you, 
givepytest-emoji<https://pypi.org/project/pytest-emoji/> and 
pytest-emoji-out<https://pypi.org/project/pytest-emoji-output/> a try 😃

The summary output now looks good, but the diffs between the expected value and 
the actual value can be improved. 
pytest-icdiff<https://pypi.org/project/pytest-icdiff/> is a plugin I’ve only 
found while researching this article — and it was love at first sight 🥰❤

[https://miro.medium.com/max/2684/1*uI2P9CCWR8wVXzAsB9CO2Q.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/2684/1*uI2P9CCWR8wVXzAsB9CO2Q.png"; 
width="1342" height="381" 
srcSet="https://miro.medium.com/max/552/1*uI2P9CCWR8wVXzAsB9CO2Q.png 276w, 
https://miro.medium.com/max/1104/1*uI2P9CCWR8wVXzAsB9CO2Q.png 552w, 
https://miro.medium.com/max/1280/1*uI2P9CCWR8wVXzAsB9CO2Q.png 640w, 
https://miro.medium.com/max/1456/1*uI2P9CCWR8wVXzAsB9CO2Q.png 728w, 
https://miro.medium.com/max/1632/1*uI2P9CCWR8wVXzAsB9CO2Q.png 816w, 
https://miro.medium.com/max/1808/1*uI2P9CCWR8wVXzAsB9CO2Q.png 904w, 
https://miro.medium.com/max/1984/1*uI2P9CCWR8wVXzAsB9CO2Q.png 992w, 
https://miro.medium.com/max/2160/1*uI2P9CCWR8wVXzAsB9CO2Q.png 1080w, 
https://miro.medium.com/max/2684/1*uI2P9CCWR8wVXzAsB9CO2Q.png 1342w" 
sizes="1342px" role="presentation"/&gt;
Image by Martin Thoma

Very similar is pytest-clarity<https://pypi.org/project/pytest-clarity/> — be 
aware, that pytest-clarity is only active when you execute pytest -vv:

[https://miro.medium.com/max/2802/1*D-cw3U9-O2tVweTHSFIr8w.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/2802/1*D-cw3U9-O2tVweTHSFIr8w.png"; 
width="1401" height="377" 
srcSet="https://miro.medium.com/max/552/1*D-cw3U9-O2tVweTHSFIr8w.png 276w, 
https://miro.medium.com/max/1104/1*D-cw3U9-O2tVweTHSFIr8w.png 552w, 
https://miro.medium.com/max/1280/1*D-cw3U9-O2tVweTHSFIr8w.png 640w, 
https://miro.medium.com/max/1456/1*D-cw3U9-O2tVweTHSFIr8w.png 728w, 
https://miro.medium.com/max/1632/1*D-cw3U9-O2tVweTHSFIr8w.png 816w, 
https://miro.medium.com/max/1808/1*D-cw3U9-O2tVweTHSFIr8w.png 904w, 
https://miro.medium.com/max/1984/1*D-cw3U9-O2tVweTHSFIr8w.png 992w, 
https://miro.medium.com/max/2160/1*D-cw3U9-O2tVweTHSFIr8w.png 1080w, 
https://miro.medium.com/max/2700/1*D-cw3U9-O2tVweTHSFIr8w.png 1350w, 
https://miro.medium.com/max/2802/1*D-cw3U9-O2tVweTHSFIr8w.png 1401w" 
sizes="1401px" role="presentation"/&gt;
Screenshot by Martin Thoma

Once you're happy with the terminal output, you might think about getting 
reports in the browser. This could help once you have to have a look at many 
things, want to scroll and search. Then 
pytest-html<https://pypi.org/project/pytest-html/> is your friend. It generates 
reports like this one:

[https://miro.medium.com/max/2488/1*_89UcLrGkqgqwU70YHaC8g.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/2488/1*_89UcLrGkqgqwU70YHaC8g.png"; 
width="1244" height="863" 
srcSet="https://miro.medium.com/max/552/1*_89UcLrGkqgqwU70YHaC8g.png 276w, 
https://miro.medium.com/max/1104/1*_89UcLrGkqgqwU70YHaC8g.png 552w, 
https://miro.medium.com/max/1280/1*_89UcLrGkqgqwU70YHaC8g.png 640w, 
https://miro.medium.com/max/1400/1*_89UcLrGkqgqwU70YHaC8g.png 700w" 
sizes="700px" role="presentation"/&gt;
Screenshot by Martin Thoma

Now that we are happy with the output, we want to make it lightning fast!

We need speed!
[https://miro.medium.com/max/11136/0*wMgNzXte3J1AcUqF]&lt;img alt="" class="ep 
fd ez jh v" src="https://miro.medium.com/max/11136/0*wMgNzXte3J1AcUqF"; 
width="5568" height="3712" 
srcSet="https://miro.medium.com/max/552/0*wMgNzXte3J1AcUqF 276w, 
https://miro.medium.com/max/1104/0*wMgNzXte3J1AcUqF 552w, 
https://miro.medium.com/max/1280/0*wMgNzXte3J1AcUqF 640w, 
https://miro.medium.com/max/1400/0*wMgNzXte3J1AcUqF 700w" sizes="700px" 
role="presentation"/&gt;
Photo by 
chuttersnap<https://unsplash.com/@chuttersnap?utm_source=medium&utm_medium=referral>
 on Unsplash<https://unsplash.com?utm_source=medium&utm_medium=referral>

Plugins can speed things up. For example, you can make pytest fail instantly 
with pytest-instafail<https://pypi.org/project/pytest-instafail/> instead of 
executing all remaining tests. For tests which might take a long time or even 
result in an infinite loop in case of errors, I use 
pytest-timeout<https://pypi.org/project/pytest-timeout/> ❤. That is especially 
helpful when you apply Mutation 
testing<https://medium.com/analytics-vidhya/unit-testing-in-python-mutation-testing-7a70143180d8>.

We also want to use our machine properly by using 
pytest-xdist<https://pypi.org/project/pytest-xdist/> . Install it, execute 
pytest -n autoand your tests run in 
parallel!pytest-parallel<https://pypi.org/project/pytest-parallel/>might also 
be worth a shot.

The most extreme speedup is not to execute stuff you don’t need. 
pytest-picked<https://github.com/anapaulagomes/pytest-picked> executes tests 
that are related to unstaged files which can be way less than your complete 
test suite.

Going in a different direction, we want to make sure that the algorithms have 
some speed behavior. With 
pytest-benchmark<https://pypi.org/project/pytest-benchmark/> , we can use the 
benchmark fixture to annotate parts of a test which we want to benchmark:

def test_argmax(benchmark):
    assert benchmark(mpu.math.argmax, [1, 2, 3]) == 2

Running pytest then also gives this output, where you can see three functions 
to which I’ve added a benchmark. Two of them test a factorization function. It 
should not be a surprise that factorizing 3072 takes longer than factorizing 
1024, but it is always astonishing to me how quickly the numbers grow. The 
argmax of 3 examples is super quick, but factorization just needs way more 
computation:

[https://miro.medium.com/max/4942/1*BQNaV3U0rYXTiaXJmBNMsQ.png]&lt;img alt="" 
class="ep fd ez jh v" 
src="https://miro.medium.com/max/4942/1*BQNaV3U0rYXTiaXJmBNMsQ.png"; 
width="2471" height="179" 
srcSet="https://miro.medium.com/max/552/1*BQNaV3U0rYXTiaXJmBNMsQ.png 276w, 
https://miro.medium.com/max/1104/1*BQNaV3U0rYXTiaXJmBNMsQ.png 552w, 
https://miro.medium.com/max/1280/1*BQNaV3U0rYXTiaXJmBNMsQ.png 640w, 
https://miro.medium.com/max/1456/1*BQNaV3U0rYXTiaXJmBNMsQ.png 728w, 
https://miro.medium.com/max/1632/1*BQNaV3U0rYXTiaXJmBNMsQ.png 816w, 
https://miro.medium.com/max/1808/1*BQNaV3U0rYXTiaXJmBNMsQ.png 904w, 
https://miro.medium.com/max/1984/1*BQNaV3U0rYXTiaXJmBNMsQ.png 992w, 
https://miro.medium.com/max/2160/1*BQNaV3U0rYXTiaXJmBNMsQ.png 1080w, 
https://miro.medium.com/max/2700/1*BQNaV3U0rYXTiaXJmBNMsQ.png 1350w, 
https://miro.medium.com/max/3240/1*BQNaV3U0rYXTiaXJmBNMsQ.png 1620w, 
https://miro.medium.com/max/3780/1*BQNaV3U0rYXTiaXJmBNMsQ.png 1890w, 
https://miro.medium.com/max/4320/1*BQNaV3U0rYXTiaXJmBNMsQ.png 2160w, 
https://miro.medium.com/max/4800/1*BQNaV3U0rYXTiaXJmBNMsQ.png 2400w" 
sizes="100vw" role="presentation"/&gt;
Minimum, Mean and Maximum execution time, as well as the standard deviation and 
the interquartile range, give you some insights into the execution time 
distribution. Image by Martin Thoma

The unique ones
[https://miro.medium.com/max/6048/0*23ekZB3SBbonMR17]&lt;img alt="" class="ep 
fd ez jh v" src="https://miro.medium.com/max/6048/0*23ekZB3SBbonMR17"; 
width="3024" height="2016" 
srcSet="https://miro.medium.com/max/552/0*23ekZB3SBbonMR17 276w, 
https://miro.medium.com/max/1104/0*23ekZB3SBbonMR17 552w, 
https://miro.medium.com/max/1280/0*23ekZB3SBbonMR17 640w, 
https://miro.medium.com/max/1400/0*23ekZB3SBbonMR17 700w" sizes="700px" 
role="presentation"/&gt;
Photo by Darius 
Cotoi<https://unsplash.com/@dariuscotoi?utm_source=medium&utm_medium=referral> 
on Unsplash<https://unsplash.com?utm_source=medium&utm_medium=referral>

Some plugins are unique and don’t fit in any of the other categories:

  *   pytest-cov<https://pypi.org/project/pytest-cov> : Get a test coverage 
report 😍 ❤ I like to generate both, an HTML report and an output to the 
terminal. In some settings, an XML report is also helpful.
  *   pytest-socket<https://pypi.org/project/pytest-socket/> : Make certain 
that you don’t query anything non-local. Very nice ❤
  *   pytest-randomly<https://github.com/pytest-dev/pytest-randomly> and 
pytest-rng<https://pypi.org/project/pytest-rng/>: If you use random.random , 
then the outcome depends on the random seed. This plugin changes the seed.
  *   pytest-random-order<https://pypi.org/project/pytest-random-order/> : 
Execute the tests in a random order, to make sure you see when a test leaves 
the system in a different state.
  *   pytest-lazy-fixtures<https://pypi.org/project/pytest-lazy-fixture/> : Use 
fixtures in @pytest.mark.parametrize .
  *   pytest-freezegun<https://pypi.org/project/pytest-freezegun/> : Freeze 
time! This is one I’ve also mentioned in my patching 
article<https://levelup.gitconnected.com/unit-testing-in-python-mocking-patching-and-dependency-injection-301280db2fed>.
  *   pytest-leaks<https://pypi.org/project/pytest-leaks/> : Find resource 
leaks. This requires a debug-built of Python!
  *   pytest-flake8<https://github.com/tholo/pytest-flake8> : Run flake8 via 
pytest. I did that for a long time, but when I learned how to use Continuous 
Integration 
pipelines<https://levelup.gitconnected.com/ci-pipelines-for-python-projects-9ac2830d2e38>
 more effectively, I stopped it. You can still execute flake8 directly.
  *   pytest-mypy<https://pypi.org/project/pytest-mypy/> and pytest-mccabe: 
Same story as for flake8. By the way, type annotations are 
awesome<https://medium.com/analytics-vidhya/type-annotations-in-python-3-8-3b401384403d>!
 I like to have those static code analysis 
tools</static-code-analysis-for-python-bdce10b8d287> in a linter step within 
the CI pipeline.
  *   pytest-deadfixtures<https://pypi.org/project/pytest-deadfixtures/> : 
Point out which fixtures are not used or duplicated.

17 Specialized Plugins — You’ll know if you need them

The following plugins are only interesting to you if you work with the 
applications for which they are written. They usually provide fixtures/mocks.

  *   pytest-cookie<https://pypi.org/project/pytest-cookies/> : Supports 
testing of cookiecutter<https://github.com/cookiecutter/cookiecutter> templates.
  *   pytest-plt<https://pypi.org/project/pytest-plt/> and 
pytest-mpl<https://pypi.org/project/pytest-mpl/>: Provides fixtures for 
matplotlib.
  *   pytest-responses<https://pypi.org/project/pytest-responses/> : Provides 
fixtures for requests<https://requests.readthedocs.io/en/master/> .
  *   pytest-asyncio<https://pypi.org/project/pytest-asyncio/> : Use it when 
you develop async functions.
  *   pytest-qt<https://pypi.org/project/pytest-qt/> : GUI development via Qt / 
PySide / PySide2.

Web Development

  *   pytest-djangoapp<https://pypi.org/project/pytest-djangoapp/> / 
pytest-djangoqueries<https://pypi.org/project/pytest-django-queries/>: Exposes 
tools for Django application developers to facilitate test authoring, including 
settings override, template tag testing, and user creation.
  *   pytest-flask<https://pypi.org/project/pytest-flask/> and 
pytest-flask-sqlalchemy<https://pypi.org/project/pytest-flask-sqlalchemy/> : 
Provides fixtures for running tests in transactions using Flask-SQLAlchemy.
  *   pytest-seleniumbase<https://pypi.org/project/pytest-seleniumbase/> / 
pytest-sbase<https://pypi.org/project/pytest-sbase/> / 
pytest-selenium<https://pypi.org/project/pytest-selenium/>

Mocks and Fixtures for AWS

  *   moto<https://pypi.org/project/moto/> : Mocks for boto3 — AWS stuff. I 
don’t exactly love this one, but it is for sure the best you can do when you 
want to test code that uses S3.
  *   pytest-aws<https://pypi.org/project/pytest-aws/> : Testing AWS resource 
configurations
  *   pytest-localstack<https://pypi.org/project/pytest-localstack/> : Create 
AWS integration tests via a Localstack Docker container

Plugins I’m uncertain about
[https://miro.medium.com/max/11520/0*_TjwL9qWSI0YPxUk]&lt;img alt="" class="ep 
fd ez jh v" src="https://miro.medium.com/max/11520/0*_TjwL9qWSI0YPxUk"; 
width="5760" height="3840" 
srcSet="https://miro.medium.com/max/552/0*_TjwL9qWSI0YPxUk 276w, 
https://miro.medium.com/max/1104/0*_TjwL9qWSI0YPxUk 552w, 
https://miro.medium.com/max/1280/0*_TjwL9qWSI0YPxUk 640w, 
https://miro.medium.com/max/1400/0*_TjwL9qWSI0YPxUk 700w" sizes="700px" 
role="presentation"/&gt;
Photo by bruce 
mars<https://unsplash.com/@brucemars?utm_source=medium&utm_medium=referral> on 
Unsplash<https://unsplash.com?utm_source=medium&utm_medium=referral>

The following plugins sounded cool for me when I first read about them, but for 
various reasons, I’m uncertain if they are really a good idea:

  *   pytest-check<https://github.com/okken/pytest-check> : Allows multiple 
failures per test. At first, I loved the idea. Then I realized that this might 
lead to worse tests as the tests start to do many things. On the other hand, 
you might want to test a “workflow” once — so not a unit test, but an 
integration test or even an end-to-end test. But then you would also need 
intermediate results.
  *   pytest-docker-tools<https://pypi.org/project/pytest_docker_tools/> and 
pytest-docker-compose<https://github.com/pytest-docker-compose/pytest-docker-compose>:
 I would just build the Docker image and execute the stuff in it.
  *   pytest-mock<https://pypi.org/project/pytest-mock/> : Provides a mocker 
fixture which is a thin-wrapper around the patching API provided by the mock 
package. It reduces boilerplate code by making mock a fixture.
  *   pytest-spec<https://pypi.org/project/pytest-spec/> , 
pytest-pspec<https://pypi.org/project/pytest-pspec/> , and 
pytest-testdox<https://pypi.org/project/pytest-testdox/> modify the pytest 
output. They show what is tested. The tests should be written in such a way 
that they represent the software specification — so the test is against a part 
of the specification.
  *   pytest-recording<https://pypi.org/project/pytest-recording/> : It should 
record network interactions via VCR.py, but I didn’t get it to work.
  *   pytest-dependency<https://github.com/RKrahl/pytest-dependency> allows you 
to specify which tests need to succeed for others to be able to succeed. Unit 
tests should be independent and dependent code should be mocked…maybe. I’m not 
certain about that.

TL;DR

pytest is the tool of choice to run tests in Python. While it has reasonable 
defaults, it’s extensive plugin system lets you customize it to make it even 
better.

I love pytest-sugar<https://github.com/Teemu/pytest-sugar> and 
pytest-icdiff<https://pypi.org/project/pytest-icdiff/> , because they make the 
output of pytest easier to read. 
pytest-cov<https://pypi.org/project/pytest-cov/> generates line- and branch 
coverage and thus is a valuable tool to find spots that need better tests. The 
next step is to run the tests. You really don’t want to accidentally hit the 
production environment. This is 
wherepytest-socket<https://pypi.org/project/pytest-socket/> comes into play. It 
just blocks everything and reports it to you. The other type of issue are 
long-running tests that are potentially in infinite loops.pytest-timeout kills 
those tests after the specified amount of time.

There are so many other plugins; many add fixtures for specific packages which 
are typically hard to test. You should now have a good idea of the many 
possibilities added by pytest plugins — use them!

What’s next?

In this series, we already had:

  *   Part 1: The basics of Unit Testing in 
Python<https://medium.com/swlh/unit-testing-in-python-basics-21a9a57418a0>
  *   Part 2: Patching, Mocks and Dependency 
Injection<https://levelup.gitconnected.com/unit-testing-in-python-mocking-patching-and-dependency-injection-301280db2fed>
  *   Part 3: How to test Flask 
applications<https://medium.com/analytics-vidhya/how-to-test-flask-applications-aef12ae5181c>
 with Databases, Templates and Protected Pages
  *   Part 4: tox and 
nox<https://medium.com/python-in-plain-english/unit-testing-in-python-tox-and-nox-833e4bbce729>
  *   Part 5: Structuring Unit 
Tests<https://medium.com/python-in-plain-english/unit-testing-in-python-structure-57acd51da923>
  *   Part 6: 
CI-Pipelines<https://levelup.gitconnected.com/ci-pipelines-for-python-projects-9ac2830d2e38>
  *   Part 7: Property-based 
Testing<https://levelup.gitconnected.com/unit-testing-in-python-property-based-testing-892a741fc119>
  *   Part 8: Mutation 
Testing<https://medium.com/analytics-vidhya/unit-testing-in-python-mutation-testing-7a70143180d8>
  *   Part 9: Static Code 
Analysis</static-code-analysis-for-python-bdce10b8d287> — Linters, Type 
Checking, and Code Complexity
  *   Part 10: Pytest Plugins to Love</pytest-plugins-to-love-️-9c71635fbe22>

Let me know if you’re interested in other topics around testing with Python.

Every Thursday, the Variable delivers the very best of Towards Data Science: 
from hands-on tutorials and cutting-edge research to original features you 
don't want to miss. Take a 
look.<https://medium.com/towards-data-science/newsletters/the-variable?source=newsletter_v3_promo--------------------------newsletter_v3_promo----------->


[]s
Alexandre Strube


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Frauke Melchior
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------

Reply via email to