Muggles are not to be confused with Squibs , who also lack magic but are born to at least one magical parent. Most Muggles have been unaware that magic and the wizarding world exist since the establishment of the International Statute of Wizarding Secrecy in , as wizards have organised their own society largely separate from the Muggle world.
Exceptions include close relatives of wizards and witches and heads of government such as the British Prime Minister. Those who work in Muggle Relations presumably work with this office. Hogsmeade Village , an exclusively magical settlement. Wizards and witches thus organised their own society, known as the wizarding world, distinct from that of Muggles. There are some exclusively magical settlements, such as Hogsmeade, but also magical communities hidden within largely Muggle ones, such as in Ottery St Catchpole and even in London.
Magical people also have a separate currency system and government. The Ministry of Magic maintains relations with the Muggle Prime Minister , but they do not appear to be subordinate to the Muggle government. However, the Muggle and magical worlds are tied together in some ways. For instance, Muggles sometimes marry wizards or witches and thus become aware of the wizarding world, as occurred with Mr Finnigan when he married a witch.
Muggles also occasionally produce a magical child. In Britain, these Muggle-born wizards and witches will often join the wizarding world when they are invited to attend Hogwarts School of Witchcraft and Wizardry. The Muggle parents will thus be informed of the existence of the wizarding world, and may even enter it on occasion, as Hermione Granger's parents did when they accompanied their daughter and the Weasley family to Diagon Alley to shop for school supplies in However Muggle parents are allowed to see wizarding pictures of the school, as Muggle-born Colin Creevey was known to take numerous pictures and sent them home to his father.
Some Muggles are aware of the magical world but, through choice, choose to ignore it, such as Vernon Dursley , who was aware his sister-in-law was a witch but otherwise remained intentionally ignorant of the wizarding world until he was forced to recognise it with the arrival of his nephew, Harry Potter. In addition, there are secret connections maintained between the two societies at the governmental level; for example, the Minister for Magic occasionally consults with the Prime Minister of Great Britain on issues affecting both societies, and it is clear that the Prime Minister is aware of the wizarding world.
Each Prime Minister, on the day they are appointed to office, gets a visit from the current Minister for Magic. The visit encompasses telling the Prime Minister of the existence of magic and that they will only ever need to meet when there is something going on in the wizarding world that might affect the Muggle world. The Muggle Dursley family , who despised magic. Historically, Muggles tended to consider those who practised magic to be evil, leading to the burning of witches during the Middle Ages. In response, some wizards and witches managed to use Flame-Freezing Charms to render the fire harmless.
Thus, most considered the Muggle efforts completely useless. Magical creatures left the Muggle world too, as many of them were extinguished, probably because of over-hunting and ecosystem destruction. Muggle dentists Mr and Mrs Granger , who were accepting of magic. In the modern world, few Muggles believe in magic.
- Confederate Tide Rising: Robert E. Lee and the Making of Southern Strategy, 1861-1862.
- Non-magic people | Harry Potter Wiki | FANDOM powered by Wikia;
- See a Problem?.
- How To Find Lost Items With Magic.
- Adland: A Global History of Advertising!
Some who are aware of the wizarding world are accepting of it, such as Hermione Granger 's parents and Jacob Kowalski. For instance, the Dursley family had a "very medieval" attitude towards magic. Petunia Dursley considered her sister Lily Potter a "freak" for her abilities, although this was originally prompted by envy of them. She would not have thought of her sister like this if she too had those powers.
They also tried to prevent him from learning of his magical heritage, without success. Ariana Dumbledore was attacked and severely traumatised by Muggle boys after they saw her use magic and she was unable to show them how to do it. It has been suggested by some wizards and witches that Muggles choose, on some level, not to believe in magic, since there are inevitably some occasions at which they are exposed to magic but seem to ignore it or attribute it to other causes.
The Magic is Might statue that depict Muggles in their 'rightful' place. Dark Wizard Gellert Grindelwald originally intended to conquer the world and make Muggles subservient to wizards. He did not have any hostilities towards Muggles as a whole, but thanks to his abilities as a Seer, saw a major Muggle war involving catastrophic weapons that could be used against wizards.
Lord Voldemort and his Death Eaters had a far more extreme ideology. They often extend this hatred to Muggle-borns as well, considering them to be unworthy of magic and not "real" wizards or witches. During the Second Wizarding War, Muggle-borns were rounded up by the Ministry of Magic on Voldemort's orders and accused of stealing magic from wizards; a way of thoroughly humiliating them instead of killing them outright.
This statue resided in the Ministry atrium and acted as a symbol of Lord Voldemort's new regime. Such wizards and witches are considered " blood traitors " by prejudiced pure-bloods such as the Malfoy and Black families for their belief in Muggle equality and attempts to protect them. Brutus Malfoy once claimed that it was a sign of weak magic to enjoy the company of Muggles,  and his descendant Lucius Malfoy tried to sabotage Arthur Weasley's career after he proposed the Muggle Protection Act in Muggle-baiting is activity which uses magic to confuse or humiliate Muggles without the Muggles realising that magic was involved.
Cultural Anthropology/Ritual and Religion - Wikibooks, open books for an open world
Unlike in Europe, where a degree of covert cooperation and communication between No-Maj governments and their magical counterparts is common, MACUSA acted totally independently of the No-Maj government working diligently to keep the wizarding world a secret. While culturally, wizarding America did not hold supremacist views against No-Majs over blood purity, their fear of exposure led to further divide.
This event caused the No-Maj population in America to become as a whole unusually suspicious of magic. As a result, unlike the European culture of witches and wizards often underestimating the intelligence of Muggles, seeing them as incapable of comprehending the existence of magic, American witches and wizards came to regard No-Majes as a major threat. Mixed marriage between magical and non-magical folk was illegal under this law until , when the law was repealed. Interaction with the No-Maj population was only allowed for everyday activities.
Due to the law, students from Ilvermorny were not allowed wands before they entered the school, nor to take them home during vacations. Others, however have more favourable opinions. She believed in the idea that Muggles should know about magic, and performed magic publicly on several occasions. Arthur Weasley is very interested in how Muggles function without the aid of magic, and collects Muggle items, though he often gets their names and other facts wrong. He has a large collection of batteries and electric plugs.
He was ecstatic to meet Hermione Granger 's Muggle parents, inviting them to have a drink with him at the Leaky Cauldron. He was also interested to learn how the Muggle post office and telephone work,  and his greatest ambition was to learn how aeroplanes stay up.
Some Muggle pastimes have also found favour with those in the wizarding world. Famously, Albus Dumbledore 's Chocolate Frog Card proclaims his liking of the Muggle sport of ten-pin bowling, and he also developed a fondness for a Muggle sweet called sherbet lemons. This ensures that your mocks will fail in the same way as your production code if they are used incorrectly:.
Mock is a flexible mock object intended to replace the use of stubs and test doubles throughout your code. Mocks are callable and create attributes as new mocks when you access them 1. Accessing the same attribute will always return the same mock. Mocks record how you use them, allowing you to make assertions about what your code has done to them. MagicMock is a subclass of Mock with all the magic methods pre-created and ready to use.
The patch decorators makes it easy to temporarily replace classes in a particular module with a Mock object. By default patch will create a MagicMock for you. Create a new Mock object. Mock takes several optional arguments that specify the behaviour of the Mock object:. If you pass in an object then a list of strings is formed by calling dir on the object excluding unsupported magic attributes and methods.
Accessing any attribute not in this list will raise an AttributeError. This allows mocks to pass isinstance tests.
How To Find Lost Items With Magic
Useful for raising exceptions or dynamically changing return values. The function is called with the same arguments as the mock, and unless it returns DEFAULT , the return value of this function is used as the return value. In this case the exception will be raised when the mock is called. By default this is a new Mock created on first access. If wraps is not None then calling the Mock will pass the call through to the wrapped object returning the real result. This can be useful for debugging.
The name is propagated to child mocks. Mocks can also be called with arbitrary keyword arguments. These will be used to set attributes on the mock after it is created. Assert that the mock was called exactly once and that that call was with the specified arguments. There can be extra calls before or after the specified calls. Changed in version 3. This can be useful where you want to make a series of assertions that reuse the same object.
Child mocks and the return value mock if any are reset as well. Add a spec to a mock. Only attributes on the spec can be fetched as attributes from the mock. Attach a mock as an attribute of this one, replacing its name and parent.
25 More Random Things About Magic
Attributes plus return values and side effects can be set on child mocks using standard dot notation and unpacking a dictionary in the method call:. For mocks with a spec this includes all the permitted attributes for the mock. Create the child mocks for attributes and return value. By default child mocks will be the same type as the parent. Subclasses of Mock may want to override this to customize the way child mocks are made. This can either be a function to be called when the mock is called, an iterable or an exception class or instance to be raised.
If you pass in a function it will be called with same arguments as the mock and unless the function returns the DEFAULT singleton the call to the mock will then return whatever the function returns. If you pass in an iterable, it is used to retrieve an iterator which must yield a value on every call.
This value can either be an exception instance to be raised, or a value to be returned from the call to the mock DEFAULT handling is identical to the function case. This will be in the form of a tuple: the first member is any ordered arguments the mock was called with or an empty tuple and the second member is any keyword arguments or an empty dictionary. These are tuples, so they can be unpacked to get at the individual arguments and make more complex assertions. See calls as tuples. This is a list of all the calls made to the mock object in sequence so the length of the list is the number of times it has been called.
Before any calls have been made it is an empty list. These can be unpacked as tuples to get at the individual arguments. As well as tracking calls to themselves, mocks also track calls to methods and attributes, and their methods and attributes:. A non-callable version of Mock. The Mock classes have support for mocking magic methods. See magic methods for the full details. The mock classes and the patch decorators all take arbitrary keyword arguments for configuration. For the patch decorators the keywords are passed to the constructor of the mock being created.
The keyword arguments are for configuring attributes of the mock:. The return value and side effect of child mocks can be set in the same way, using dotted notation. When Autospeccing , it will also apply to method calls on the mock object. A mock intended to be used as a property, or other descriptor, on a class. Fetching a PropertyMock instance from an object calls the mock, with no args. Setting it calls the mock with the value being set. Instead you can attach it to the mock type object:.
Mock objects are callable. The default return value is a new Mock object; it is created the first time the return value is accessed either explicitly or by calling the Mock - but it is stored and the same one returned each time. This allows you to vary the return value of the call dynamically, based on the input:. If you want the mock to still return the default return value a new mock , or any set return value, then there are two ways of doing this. Either return mock. Repeated calls to the mock will return values from the iterable until the iterable is exhausted and a StopIteration is raised :.
You may want a mock object to return False to a hasattr call, or raise an AttributeError when an attribute is fetched.
- Related Stories;
- About this book!
- The Journey to Sales Transformation.
- Constructing the World!
- A Wish For Smish.
Once deleted, accessing an attribute will raise an AttributeError. There are two alternatives. This is useful for configuring child mocks and then attaching them to the parent, or for attaching mocks to a parent that records all calls to the children and allows you to make assertions about the order of calls between mocks:.
The exception to this is if the mock has a name. Mocks created for you by patch are automatically given names. The only exceptions are magic methods and attributes those that have leading and trailing double underscores. This is because the interpreter will often implicitly request these methods, and gets very confused to get a new Mock object when it expects a magic method.
If you need magic method support see magic methods. The patch decorators are used for patching objects only within the scope of the function they decorate. They automatically handle the unpatching for you, even if exceptions are raised. All of these functions can also be used in with statements or as class decorators.
The key is to do the patching in the right namespace. See the section where to patch. Inside the body of the function or with statement, the target is patched with a new object. If new is omitted, then the target is replaced with a MagicMock. If patch is used as a decorator and new is omitted, the created mock is passed in as an extra argument to the decorated function.
If patch is used as a context manager the created mock is returned by the context manager. The target is imported and the specified object replaced with the new object, so the target must be importable from the environment you are calling patch from. The target is imported when the decorated function is executed, not at decoration time. By default MagicMock is used. A more powerful form of spec is autospec.
All attributes of the mock will also have the spec of the corresponding attribute of the object being replaced. Methods and functions being mocked will have their arguments checked and will raise a TypeError if they are called with the wrong signature. This is useful for writing tests against attributes that your production code creates at runtime. It is off by default because it can be dangerous. Patch can be used as a TestCase class decorator. It works by decorating each test method in the class.
This reduces the boilerplate code when your test methods share a common patchings set. By default this is 'test' , which matches the way unittest finds tests. You can specify an alternative prefix by setting patch. Patch can be used as a context manager, with the with statement. Here the patching applies to the indented block after the with statement. Patching a class replaces the class with a MagicMock instance. For example:. For example, if you wanted a NonCallableMock to be used:.
Another use case might be to replace an object with an io. StringIO instance:. When patch is creating a mock for you, it is common that the first thing you need to do is to configure the mock. Some of that configuration can be done in the call to patch.
Any arbitrary keywords you pass into the call will be used to set attributes on the created mock:. By default, attempting to patch a function in a module or a method or an attribute in a class that does not exist will fail with AttributeError :. Like patch , patch. When used as a class decorator patch.
You can either call patch. The three argument form takes the object to be patched, the attribute name and the object to replace the attribute with. When calling with the two argument form you omit the replacement object, and a mock is created for you and passed in as an extra argument to the decorated function:. Patch a dictionary, or dictionary like object, and restore the dictionary to its original state after the test.
If it is a mapping then it must at least support getting, setting and deleting items plus iterating over keys. Keywords can be used in the patch. At the very minimum they must support item getting, setting, deleting and either iteration or membership test. Perform multiple patches in a single call. It takes the object to be patched either as an object or a string to fetch the object by importing and keyword arguments for the patches:. In this case the created mocks are passed into a decorated function by keyword, and a dictionary is returned when patch. These arguments will be applied to all patches done by patch.
If you want patch. If you use patch. If patch. All the patchers have start and stop methods. These make it simpler to do patching in setUp methods or where you want to do multiple patches without nesting decorators or with statements. To use them call patch , patch. You can then call start to put the patch in place and stop to undo it.
If you are using patch to create a mock for you then it will be returned by the call to patcher. A typical use case for this might be for doing multiple patches in the setUp method of a TestCase :. This can be fiddlier than you might think, because if an exception is raised in the setUp then tearDown is not called. As an added bonus you no longer need to keep a reference to the patcher object. It is also possible to stop all patches which have been started by using patch. Stop all active patches. Only stops patches started with start.
You can patch any builtins within a module. The following example patches builtin ord :. All of the patchers can be used as class decorators. When used in this way they wrap every test method on the class. The patchers recognise methods that start with 'test' as being test methods. This is the same way that the unittest. TestLoader finds test methods by default. It is possible that you want to use a different prefix for your tests. You can inform the patchers of the different prefix by setting patch.
Note that the decorators are applied from the bottom upwards. This is the standard way that Python applies decorators. The order of the created mocks passed into your test function matches this order.
- The Sun, The Glass, and The Leaning Rock: Secret of the Lost Dutchmans Gold (Florea and Holland Mystery Series Book 1).
- Brave Captive.
- Eleven Little Piggies (A Jake Hines Mystery)!
- Lesson Plans The Slave Dancer?
There can be many names pointing to any individual object, so for patching to work you must ensure that you patch the name used by the system under test. The basic principle is that you patch where an object is looked up , which is not necessarily the same place as where it is defined. A couple of examples will help to clarify this. The problem is that when we import module b, which we will have to do then it imports SomeClass from module a. If we use patch to mock out a. SomeClass then it will have no effect on our test; module b already has a reference to the real SomeClass and it looks like our patching had no effect.
The key is to patch out SomeClass where it is used or where it is looked up. The patching should look like:. Both of these import forms are common.