Can pytest fixtures and confest.py modules be shared across packages?

2024/11/18 19:27:26

Suppose I have packageA which provides a class usefulClass, pytest fixtures in a test_stuff.py module, and test configurations in a conftest.py module.

Moreover, suppose that I have packageBand packageC both of which import packageA, installed via pip, and that they use usefulClass in the same way. Because they use usefulClass in the same way, packageB and packageC will require many identical pytest fixtures and configurations. In fact, their tests will primarily differ only in the sets of inputs over which they iterate.

Because the fixtures and configurations are identical and arise from the use of usefulClass, is it possible to define those fixtures and configurations in packageA, and then import them into the testing environments of packageB and packageC?

In particular, I would like to reuse the definition of pytest_generate_tests that appears in packageA's conftest.py module across dozens, if not hundreds of other packages. This way, I only need maintain one confest.py module, rather than hundreds.

Answer

The conftest.py file is not part of the module and cannot be imported from other modules.

However you could create a module packageA.testutils, which you then can import in all conftest.py files, including packageA's:

from packageA.testutils import *

Maybe it even warrants creating an individual package that all your other packages depend on.

https://en.xdnf.cn/q/71025.html

Related Q&A

Sort a list by presence of items in another list

Suppose I have two lists:a = [30, 10, 90, 1111, 17] b = [60, 1201, 30, 17, 900]How would you sort this most efficiently, such that:list b is sorted with respect to a. Unique elements in b should be pla…

Sample from a multivariate t distribution python

I am wondering if there is a function for sampling from a multivariate student t-distribution in Python. I have the mean vector with 14 elements, the 14x14 covariance matrix and the degrees of freedom …

Why is this Jinja nl2br filter escaping brs but not ps?

I am attempting to implement this Jinja nl2br filter. It is working correctly except that the <br>s it adds are being escaped. This is weird to me because the <p>s are not being escaped and…

select certain monitor for going fullscreen with gtk

I intend to change the monitor where I show a fullscreen window. This is especially interesting when having a projector hooked up.Ive tried to use fullscreen_on_monitor but that doesnt produce any visi…

Load Excel add-in using win32com from Python

Ive seen from various questions on here that if an instance of Excel is opened from Python using:xl = win32com.client.gencache.EnsureDispatch(Excel.Application) xl.Visible = True wb = xl.Workbooks.Open…

iterating through a list removing items, some items are not removed

Im trying to transfer the contents of one list to another, but its not working and I dont know why not. My code looks like this:list1 = [1, 2, 3, 4, 5, 6] list2 = []for item in list1:list2.append(item)…

Apply function to create string with multiple columns as argument

I have a dataframe like this:name . size . type . av_size_type 0 John . 23 . Qapra . 22 1 Dan . 21 . nukneH . 12 2 Monica . 12 . kahless . 15I wa…

Popping items from a list using a loop in Python [duplicate]

This question already has answers here:Strange result when removing item from a list while iterating over it in Python(12 answers)Closed 3 months ago.Im trying to write a for loop in python to pop out …

Django Admin Media prefix URL issue

i ve the following folder structuresrc\BAT\templates\admin\base.html src\BAT\media\base.css src\BAT\media\admin-media\base.csssettings.pyMEDIA_ROOT = os.path.join( APP_DIR, media ) MEDIA_URL = /media/ …

lazy processpoolexecutor in Python?

I have a large number of tasks that I want to execute and make the results available via a generator. However, using a ProcessPoolExecutor and as_completed will evaluate the results greedily and store …