Parametrizing Fixtures

Python 3: Automating Your Job Tasks Superhero Level: Automate Unit Testing with Python 3
4 minutes
Share the link to this page
You need to have access to the item to view this lesson.
One-time Fee
List Price:  $139.99
You save:  $40
List Price:  €128.82
You save:  €36.80
List Price:  £109.74
You save:  £31.35
List Price:  CA$191.13
You save:  CA$54.61
List Price:  A$210.68
You save:  A$60.19
List Price:  S$188.83
You save:  S$53.95
List Price:  HK$1,092.95
You save:  HK$312.29
CHF 91.34
List Price:  CHF 127.88
You save:  CHF 36.54
NOK kr1,052.31
List Price:  NOK kr1,473.28
You save:  NOK kr420.96
DKK kr686.58
List Price:  DKK kr961.24
You save:  DKK kr274.66
List Price:  NZ$227.97
You save:  NZ$65.13
List Price:  د.إ514.17
You save:  د.إ146.91
List Price:  ৳16,408.23
You save:  ৳4,688.40
List Price:  ₹11,637.16
You save:  ₹3,325.14
List Price:  RM657.67
You save:  RM187.92
List Price:  ₦206,269.66
You save:  ₦58,938.40
List Price:  ₨38,916.02
You save:  ₨11,119.65
List Price:  ฿5,127.43
You save:  ฿1,465.08
List Price:  ₺4,505.30
You save:  ₺1,287.32
List Price:  B$723.91
You save:  B$206.84
List Price:  R2,571.91
You save:  R734.88
List Price:  Лв252.38
You save:  Лв72.11
List Price:  ₩190,499.14
You save:  ₩54,432.21
List Price:  ₪515.38
You save:  ₪147.26
List Price:  ₱8,140.48
You save:  ₱2,326.02
List Price:  ¥21,963.82
You save:  ¥6,275.82
List Price:  MX$2,336.09
You save:  MX$667.50
List Price:  QR510.10
You save:  QR145.75
List Price:  P1,900.64
You save:  P543.07
List Price:  KSh18,618.67
You save:  KSh5,320
List Price:  E£6,599.78
You save:  E£1,885.78
List Price:  ብር8,037.80
You save:  ብር2,296.67
List Price:  Kz118,908.34
You save:  Kz33,976.24
List Price:  CLP$126,117.11
You save:  CLP$36,036.03
List Price:  CN¥1,014.10
You save:  CN¥289.76
List Price:  RD$8,237.97
You save:  RD$2,353.87
List Price:  DA18,843.53
You save:  DA5,384.25
List Price:  FJ$311.92
You save:  FJ$89.12
List Price:  Q1,086.64
You save:  Q310.49
List Price:  GY$29,266.81
You save:  GY$8,362.54
ISK kr13,793.62
List Price:  ISK kr19,311.62
You save:  ISK kr5,518
List Price:  DH1,395.33
You save:  DH398.69
List Price:  L2,480.56
You save:  L708.78
List Price:  ден7,930.17
You save:  ден2,265.92
List Price:  MOP$1,125.70
You save:  MOP$321.65
List Price:  N$2,570.90
You save:  N$734.59
List Price:  C$5,148.73
You save:  C$1,471.17
List Price:  रु18,603.56
You save:  रु5,315.68
List Price:  S/522.95
You save:  S/149.42
List Price:  K543.64
You save:  K155.33
List Price:  SAR525.05
You save:  SAR150.02
List Price:  ZK3,733.66
You save:  ZK1,066.83
List Price:  L641.14
You save:  L183.19
List Price:  Kč3,187.01
You save:  Kč910.64
List Price:  Ft49,549.41
You save:  Ft14,157.98
SEK kr1,062.40
List Price:  SEK kr1,487.41
You save:  SEK kr425
List Price:  ARS$124,696.09
You save:  ARS$35,630
List Price:  Bs966.60
You save:  Bs276.19
List Price:  COP$540,370.17
You save:  COP$154,402.50
List Price:  ₡71,720.93
You save:  ₡20,493.15
List Price:  L3,457
You save:  L987.78
List Price:  ₲1,052,195.01
You save:  ₲300,648.62
List Price:  $U5,389.29
You save:  $U1,539.90
List Price:  zł547.82
You save:  zł156.53
Already have an account? Log In


Welcome back. In this lecture we are going to discuss fixture parameterization, which as its name implies, means providing parameters to a fixture. For instance, if you provide two parameters to your fixture, then all the tests using that fixture will run twice, once for each parameter. This feature is especially useful whenever you want to write exhaustive tests. exhaustive testing means you want to test all possible inputs, data combinations or scenarios for a certain application or software component. In this lecture, we are going to use the same test setup as in the previous videos, meaning file located in the root directory, and the sub directory containing the test.

In my case, I have the fixture underscore params folder as a root directory and the test sub folder containing the Test underscore file, you can download this test setup from the notebook following this lecture. First, let's have a look at the file. This is basically the same file we use previously, with one small twist the addition of the params parameter right here in between the parentheses of the fixture. As you can see, this is a list in which you can pass all the possible inputs for your application. In this case, these are the indexes of the five entries inside the Excel column loaded as a panda's data frame. Next, notice that we are passing a special object called request as a parameter to our fixture function.

And its role is to request and borrow information from the fixture context. What this means is that if you look right here in the fixture function, using the params attribute of the request object we are able to request each of the values in the list we define Up here, so that each element of that list is passed to the fixture function, thus extracting all the values inside the data frame and contributing to the exhaustive testing of our application. Now looking at the bigger picture, the fixture function will be called Five times once for each value in the params list, each time executing the tests that depend on this fixture. Now let's also see the tests inside the sub directory. So let me open up this file as well. So notice that I wrote two tests only.

The first one checking if the results produced by the XY func function is less than or equal to 1000. And the second one verifying that the result is greater than or equal to zero. So given the fact that we have two tests, and five possible inputs defined in the params list, this means that there will be a total of 10 tests right let's run the test. While and see the results. So let me open up the windows command line. I'm going to move over to the D drive.

And now CD fixture for Ram. This is the new folder, Enter. And now let's go deeper into the test sub directory. So we have pi test, dash dash disable warning, best results.pi. Okay, so the first thing that we notice collected 10 items. So the fixture function has been called Five times, each time running the two tests that depend on this fixture.

To see this even better. Let me run the test suite again, this time adding the dash v option to the command for an increased verbosity level. So I'm going to add dash v right here, enter. Now you can see very clearly that the first two tests being executed out of the ones when the index is zero. So for this index, Despite test runs both test functions test underscore result one and test underscore result two. Next for index one pi test runs both test functions again, and it continues to do the same until all the values in the params list are exhausted.

Okay, so this is the main idea behind fixture parametrization. It is definitely a very useful concept in test automation. And it will come in handy someday, especially if you're planning to perform exhaustive testing on your Python applications. I'll see you in the next lecture.

Sign Up


Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.