I need to write unit tests for the following class function, which returns the EC2 instances of AWS, to be tested.
class C:
def f(cls, session, filters):
# ....
instances = session.resource('ec2').instances.filter(Filters=filters)
# ....
return instances
I want to test if session.resource('ec2').instances.filter()
is called with parameter Filters=filters
.
import boto3
import boto3.session
import pytest
from moto import mock_ec2
@mock_ec2
def test_get_nodes():
'''Test get node'''
session = boto3.session.Session(region_name='')
filters = None
C.f(session, filters)
assert session.resource('ec2').instances.filter.call_count == 1
However, the test got the following error?
> raise ValueError("Invalid endpoint: %s" % endpoint_url) E ValueError: Invalid endpoint: https://ec2..amazonaws.com
I don't want the test function connect to the AWS console actually. Anyway, it got the following error after I set the region_name
with a proper value:
> assert session.resource('ec2').instances.filter.call_count == 1 E AttributeError: 'function' object has no attribute 'call_count'